| 1 | // Copyright 2019 The Go Authors. All rights reserved. |
|---|---|
| 2 | // Use of this source code is governed by a BSD-style |
| 3 | // license that can be found in the LICENSE file. |
| 4 | |
| 5 | package analysis |
| 6 | |
| 7 | import "go/token" |
| 8 | |
| 9 | // A Diagnostic is a message associated with a source location or range. |
| 10 | // |
| 11 | // An Analyzer may return a variety of diagnostics; the optional Category, |
| 12 | // which should be a constant, may be used to classify them. |
| 13 | // It is primarily intended to make it easy to look up documentation. |
| 14 | // |
| 15 | // If End is provided, the diagnostic is specified to apply to the range between |
| 16 | // Pos and End. |
| 17 | type Diagnostic struct { |
| 18 | Pos token.Pos |
| 19 | End token.Pos // optional |
| 20 | Category string // optional |
| 21 | Message string |
| 22 | |
| 23 | // SuggestedFixes contains suggested fixes for a diagnostic which can be used to perform |
| 24 | // edits to a file that address the diagnostic. |
| 25 | // TODO(matloob): Should multiple SuggestedFixes be allowed for a diagnostic? |
| 26 | // Diagnostics should not contain SuggestedFixes that overlap. |
| 27 | // Experimental: This API is experimental and may change in the future. |
| 28 | SuggestedFixes []SuggestedFix // optional |
| 29 | |
| 30 | // Experimental: This API is experimental and may change in the future. |
| 31 | Related []RelatedInformation // optional |
| 32 | } |
| 33 | |
| 34 | // RelatedInformation contains information related to a diagnostic. |
| 35 | // For example, a diagnostic that flags duplicated declarations of a |
| 36 | // variable may include one RelatedInformation per existing |
| 37 | // declaration. |
| 38 | type RelatedInformation struct { |
| 39 | Pos token.Pos |
| 40 | End token.Pos // optional |
| 41 | Message string |
| 42 | } |
| 43 | |
| 44 | // A SuggestedFix is a code change associated with a Diagnostic that a user can choose |
| 45 | // to apply to their code. Usually the SuggestedFix is meant to fix the issue flagged |
| 46 | // by the diagnostic. |
| 47 | // TextEdits for a SuggestedFix should not overlap. TextEdits for a SuggestedFix |
| 48 | // should not contain edits for other packages. |
| 49 | // Experimental: This API is experimental and may change in the future. |
| 50 | type SuggestedFix struct { |
| 51 | // A description for this suggested fix to be shown to a user deciding |
| 52 | // whether to accept it. |
| 53 | Message string |
| 54 | TextEdits []TextEdit |
| 55 | } |
| 56 | |
| 57 | // A TextEdit represents the replacement of the code between Pos and End with the new text. |
| 58 | // Each TextEdit should apply to a single file. End should not be earlier in the file than Pos. |
| 59 | // Experimental: This API is experimental and may change in the future. |
| 60 | type TextEdit struct { |
| 61 | // For a pure insertion, End can either be set to Pos or token.NoPos. |
| 62 | Pos token.Pos |
| 63 | End token.Pos |
| 64 | NewText []byte |
| 65 | } |
| 66 |
Members