| package analysis | 
 |  | 
 | import "go/token" | 
 |  | 
 | // A Diagnostic is a message associated with a source location or range. | 
 | // | 
 | // An Analyzer may return a variety of diagnostics; the optional Category, | 
 | // which should be a constant, may be used to classify them. | 
 | // It is primarily intended to make it easy to look up documentation. | 
 | // | 
 | // If End is provided, the diagnostic is specified to apply to the range between | 
 | // Pos and End. | 
 | type Diagnostic struct { | 
 | 	Pos      token.Pos | 
 | 	End      token.Pos // optional | 
 | 	Category string    // optional | 
 | 	Message  string | 
 |  | 
 | 	// SuggestedFixes contains suggested fixes for a diagnostic which can be used to perform | 
 | 	// edits to a file that address the diagnostic. | 
 | 	// TODO(matloob): Should multiple SuggestedFixes be allowed for a diagnostic? | 
 | 	// Diagnostics should not contain SuggestedFixes that overlap. | 
 | 	// Experimental: This API is experimental and may change in the future. | 
 | 	SuggestedFixes []SuggestedFix // optional | 
 |  | 
 | 	// Experimental: This API is experimental and may change in the future. | 
 | 	Related []RelatedInformation // optional | 
 | } | 
 |  | 
 | // RelatedInformation contains information related to a diagnostic. | 
 | // For example, a diagnostic that flags duplicated declarations of a | 
 | // variable may include one RelatedInformation per existing | 
 | // declaration. | 
 | type RelatedInformation struct { | 
 | 	Pos     token.Pos | 
 | 	End     token.Pos | 
 | 	Message string | 
 | } | 
 |  | 
 | // A SuggestedFix is a code change associated with a Diagnostic that a user can choose | 
 | // to apply to their code. Usually the SuggestedFix is meant to fix the issue flagged | 
 | // by the diagnostic. | 
 | // TextEdits for a SuggestedFix should not overlap. TextEdits for a SuggestedFix | 
 | // should not contain edits for other packages. | 
 | // Experimental: This API is experimental and may change in the future. | 
 | type SuggestedFix struct { | 
 | 	// A description for this suggested fix to be shown to a user deciding | 
 | 	// whether to accept it. | 
 | 	Message   string | 
 | 	TextEdits []TextEdit | 
 | } | 
 |  | 
 | // A TextEdit represents the replacement of the code between Pos and End with the new text. | 
 | // Each TextEdit should apply to a single file. End should not be earlier in the file than Pos. | 
 | // Experimental: This API is experimental and may change in the future. | 
 | type TextEdit struct { | 
 | 	// For a pure insertion, End can either be set to Pos or token.NoPos. | 
 | 	Pos     token.Pos | 
 | 	End     token.Pos | 
 | 	NewText []byte | 
 | } |