150 lines
4.5 KiB
Go
150 lines
4.5 KiB
Go
|
// SPDX-FileCopyrightText: 2019 The Go Language Server Authors
|
||
|
// SPDX-License-Identifier: BSD-3-Clause
|
||
|
|
||
|
package protocol
|
||
|
|
||
|
import (
|
||
|
"strconv"
|
||
|
)
|
||
|
|
||
|
// Diagnostic represents a diagnostic, such as a compiler error or warning.
|
||
|
//
|
||
|
// Diagnostic objects are only valid in the scope of a resource.
|
||
|
type Diagnostic struct {
|
||
|
// Range is the range at which the message applies.
|
||
|
Range Range `json:"range"`
|
||
|
|
||
|
// Severity is the diagnostic's severity. Can be omitted. If omitted it is up to the
|
||
|
// client to interpret diagnostics as error, warning, info or hint.
|
||
|
Severity DiagnosticSeverity `json:"severity,omitempty"`
|
||
|
|
||
|
// Code is the diagnostic's code, which might appear in the user interface.
|
||
|
Code interface{} `json:"code,omitempty"` // int32 | string;
|
||
|
|
||
|
// CodeDescription an optional property to describe the error code.
|
||
|
//
|
||
|
// @since 3.16.0.
|
||
|
CodeDescription *CodeDescription `json:"codeDescription,omitempty"`
|
||
|
|
||
|
// Source a human-readable string describing the source of this
|
||
|
// diagnostic, e.g. 'typescript' or 'super lint'.
|
||
|
Source string `json:"source,omitempty"`
|
||
|
|
||
|
// Message is the diagnostic's message.
|
||
|
Message string `json:"message"`
|
||
|
|
||
|
// Tags is the additional metadata about the diagnostic.
|
||
|
//
|
||
|
// @since 3.15.0.
|
||
|
Tags []DiagnosticTag `json:"tags,omitempty"`
|
||
|
|
||
|
// RelatedInformation an array of related diagnostic information, e.g. when symbol-names within
|
||
|
// a scope collide all definitions can be marked via this property.
|
||
|
RelatedInformation []DiagnosticRelatedInformation `json:"relatedInformation,omitempty"`
|
||
|
|
||
|
// Data is a data entry field that is preserved between a
|
||
|
// "textDocument/publishDiagnostics" notification and
|
||
|
// "textDocument/codeAction" request.
|
||
|
//
|
||
|
// @since 3.16.0.
|
||
|
Data interface{} `json:"data,omitempty"`
|
||
|
}
|
||
|
|
||
|
// DiagnosticSeverity indicates the severity of a Diagnostic message.
|
||
|
type DiagnosticSeverity float64
|
||
|
|
||
|
const (
|
||
|
// DiagnosticSeverityError reports an error.
|
||
|
DiagnosticSeverityError DiagnosticSeverity = 1
|
||
|
|
||
|
// DiagnosticSeverityWarning reports a warning.
|
||
|
DiagnosticSeverityWarning DiagnosticSeverity = 2
|
||
|
|
||
|
// DiagnosticSeverityInformation reports an information.
|
||
|
DiagnosticSeverityInformation DiagnosticSeverity = 3
|
||
|
|
||
|
// DiagnosticSeverityHint reports a hint.
|
||
|
DiagnosticSeverityHint DiagnosticSeverity = 4
|
||
|
)
|
||
|
|
||
|
// String implements fmt.Stringer.
|
||
|
func (d DiagnosticSeverity) String() string {
|
||
|
switch d {
|
||
|
case DiagnosticSeverityError:
|
||
|
return "Error"
|
||
|
case DiagnosticSeverityWarning:
|
||
|
return "Warning"
|
||
|
case DiagnosticSeverityInformation:
|
||
|
return "Information"
|
||
|
case DiagnosticSeverityHint:
|
||
|
return "Hint"
|
||
|
default:
|
||
|
return strconv.FormatFloat(float64(d), 'f', -10, 64)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// CodeDescription is the structure to capture a description for an error code.
|
||
|
//
|
||
|
// @since 3.16.0.
|
||
|
type CodeDescription struct {
|
||
|
// Href an URI to open with more information about the diagnostic error.
|
||
|
Href URI `json:"href"`
|
||
|
}
|
||
|
|
||
|
// DiagnosticTag is the diagnostic tags.
|
||
|
//
|
||
|
// @since 3.15.0.
|
||
|
type DiagnosticTag float64
|
||
|
|
||
|
// list of DiagnosticTag.
|
||
|
const (
|
||
|
// DiagnosticTagUnnecessary unused or unnecessary code.
|
||
|
//
|
||
|
// Clients are allowed to render diagnostics with this tag faded out instead of having
|
||
|
// an error squiggle.
|
||
|
DiagnosticTagUnnecessary DiagnosticTag = 1
|
||
|
|
||
|
// DiagnosticTagDeprecated deprecated or obsolete code.
|
||
|
//
|
||
|
// Clients are allowed to rendered diagnostics with this tag strike through.
|
||
|
DiagnosticTagDeprecated DiagnosticTag = 2
|
||
|
)
|
||
|
|
||
|
// String implements fmt.Stringer.
|
||
|
func (d DiagnosticTag) String() string {
|
||
|
switch d {
|
||
|
case DiagnosticTagUnnecessary:
|
||
|
return "Unnecessary"
|
||
|
case DiagnosticTagDeprecated:
|
||
|
return "Deprecated"
|
||
|
default:
|
||
|
return strconv.FormatFloat(float64(d), 'f', -10, 64)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// DiagnosticRelatedInformation represents a related message and source code location for a diagnostic.
|
||
|
//
|
||
|
// This should be used to point to code locations that cause or related to a diagnostics, e.g when duplicating
|
||
|
// a symbol in a scope.
|
||
|
type DiagnosticRelatedInformation struct {
|
||
|
// Location is the location of this related diagnostic information.
|
||
|
Location Location `json:"location"`
|
||
|
|
||
|
// Message is the message of this related diagnostic information.
|
||
|
Message string `json:"message"`
|
||
|
}
|
||
|
|
||
|
// PublishDiagnosticsParams represents a params of PublishDiagnostics notification.
|
||
|
type PublishDiagnosticsParams struct {
|
||
|
// URI is the URI for which diagnostic information is reported.
|
||
|
URI DocumentURI `json:"uri"`
|
||
|
|
||
|
// Version optional the version number of the document the diagnostics are published for.
|
||
|
//
|
||
|
// @since 3.15
|
||
|
Version uint32 `json:"version,omitempty"`
|
||
|
|
||
|
// Diagnostics an array of diagnostic information items.
|
||
|
Diagnostics []Diagnostic `json:"diagnostics"`
|
||
|
}
|