ghcide-2.4.0.0: The core of an IDE

Safe Haskell | Safe-Inferred
Language | Haskell2010

Development.IDE.Types.Diagnostics

Synopsis

- data Diagnostic = Diagnostic {
  - _range :: Range
  - _severity :: Maybe DiagnosticSeverity
  - _code :: Maybe (Int32 |? Text)
  - _codeDescription :: Maybe CodeDescription
  - _source :: Maybe Text
  - _message :: Text
  - _tags :: Maybe [DiagnosticTag]
  - _relatedInformation :: Maybe [DiagnosticRelatedInformation]
  - _data_ :: Maybe Value
  }
- data ShowDiagnostic
  - = ShowDiag
  - | HideDiag
- type FileDiagnostic = (NormalizedFilePath, ShowDiagnostic, Diagnostic)
- type IdeResult v = ([FileDiagnostic], Maybe v)
- data DiagnosticSeverity
  - = DiagnosticSeverity_Error
  - | DiagnosticSeverity_Warning
  - | DiagnosticSeverity_Information
  - | DiagnosticSeverity_Hint
- type DiagnosticStore = HashMap NormalizedUri StoreItem
- ideErrorText :: NormalizedFilePath -> Text -> FileDiagnostic
- ideErrorWithSource :: Maybe Text -> Maybe DiagnosticSeverity -> a -> Text -> (a, ShowDiagnostic, Diagnostic)
- showDiagnostics :: [FileDiagnostic] -> Text
- showDiagnosticsColored :: [FileDiagnostic] -> Text
- type IdeResultNoDiagnosticsEarlyCutoff v = (Maybe ByteString, Maybe v)

# Documentation

data Diagnostic #

Represents a diagnostic, such as a compiler error or warning. Diagnostic objects are only valid in the scope of a resource.

Constructors

Diagnostic |
Fields _range :: Range The range at which the message applies _severity :: Maybe DiagnosticSeverity The diagnostic's severity. Can be omitted. If omitted it is up to the client to interpret diagnostics as error, warning, info or hint. _code :: Maybe (Int32 |? Text) The diagnostic's code, which usually appear in the user interface. _codeDescription :: Maybe CodeDescription An optional property to describe the error code. Requires the code field (above) to be present/not null. Since: lsp-types-3.16.0 _source :: Maybe Text A human-readable string describing the source of this diagnostic, e.g. `typescript` or 'super lint'. It usually appears in the user interface. _message :: Text The diagnostic's message. It usually appears in the user interface _tags :: Maybe [DiagnosticTag] Additional metadata about the diagnostic. Since: lsp-types-3.15.0 _relatedInformation :: Maybe [DiagnosticRelatedInformation] An array of related diagnostic information, e.g. when symbol-names within a scope collide all definitions can be marked via this property. _data_ :: Maybe Value A data entry field that is preserved between a `textDocument/publishDiagnostics` notification and `textDocument/codeAction` request. Since: lsp-types-3.16.0

#### Instances

Instances details

FromJSON Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic Methods parseJSON :: Value -> Parser Diagnostic # parseJSONList :: Value -> Parser [Diagnostic] # omittedField :: Maybe Diagnostic #
ToJSON Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic Methods toJSON :: Diagnostic -> Value # toEncoding :: Diagnostic -> Encoding # toJSONList :: [Diagnostic] -> Value # toEncodingList :: [Diagnostic] -> Encoding # omitField :: Diagnostic -> Bool #
Generic Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic Associated Types type Rep Diagnostic :: Type -> Type Methods from :: Diagnostic -> Rep Diagnostic x to :: Rep Diagnostic x -> Diagnostic
Show Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic Methods showsPrec :: Int -> Diagnostic -> ShowS # show :: Diagnostic -> String # showList :: [Diagnostic] -> ShowS #
NFData Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic Methods rnf :: Diagnostic -> () #
Eq Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic Methods (==) :: Diagnostic -> Diagnostic -> Bool # (/=) :: Diagnostic -> Diagnostic -> Bool #
Ord Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic Methods compare :: Diagnostic -> Diagnostic -> Ordering (<) :: Diagnostic -> Diagnostic -> Bool (<=) :: Diagnostic -> Diagnostic -> Bool (>) :: Diagnostic -> Diagnostic -> Bool (>=) :: Diagnostic -> Diagnostic -> Bool max :: Diagnostic -> Diagnostic -> Diagnostic min :: Diagnostic -> Diagnostic -> Diagnostic
Hashable Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic Methods hashWithSalt :: Int -> Diagnostic -> Int # hash :: Diagnostic -> Int #
Pretty Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic Methods pretty :: Diagnostic -> Doc ann # prettyList :: [Diagnostic] -> Doc ann #
HasMessage Diagnostic Text |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods message :: Lens' Diagnostic Text #
HasRange Diagnostic Range |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods range :: Lens' Diagnostic Range #
HasCode Diagnostic (Maybe (Int32 |? Text)) |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods code :: Lens' Diagnostic (Maybe (Int32 |? Text)) #
HasCodeDescription Diagnostic (Maybe CodeDescription) |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods codeDescription :: Lens' Diagnostic (Maybe CodeDescription) #
HasData_ Diagnostic (Maybe Value) |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods data_ :: Lens' Diagnostic (Maybe Value) #
HasDiagnostics CodeAction (Maybe [Diagnostic]) |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods diagnostics :: Lens' CodeAction (Maybe [Diagnostic]) #
HasDiagnostics CodeActionContext [Diagnostic] |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods diagnostics :: Lens' CodeActionContext [Diagnostic] #
HasDiagnostics PublishDiagnosticsParams [Diagnostic] |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods diagnostics :: Lens' PublishDiagnosticsParams [Diagnostic] #
HasItems FullDocumentDiagnosticReport [Diagnostic] |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods items :: Lens' FullDocumentDiagnosticReport [Diagnostic] #
HasItems RelatedFullDocumentDiagnosticReport [Diagnostic] |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods items :: Lens' RelatedFullDocumentDiagnosticReport [Diagnostic] #
HasItems WorkspaceFullDocumentDiagnosticReport [Diagnostic] |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods items :: Lens' WorkspaceFullDocumentDiagnosticReport [Diagnostic] #
HasRelatedInformation Diagnostic (Maybe [DiagnosticRelatedInformation]) |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods relatedInformation :: Lens' Diagnostic (Maybe [DiagnosticRelatedInformation]) #
HasSeverity Diagnostic (Maybe DiagnosticSeverity) |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods severity :: Lens' Diagnostic (Maybe DiagnosticSeverity) #
HasSource Diagnostic (Maybe Text) |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods source :: Lens' Diagnostic (Maybe Text) #
HasTags Diagnostic (Maybe [DiagnosticTag]) |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods tags :: Lens' Diagnostic (Maybe [DiagnosticTag]) #
type Rep Diagnostic |
Instance details Defined in Language.LSP.Protocol.Internal.Types.Diagnostic type Rep Diagnostic = D1 ('MetaData "Diagnostic" "Language.LSP.Protocol.Internal.Types.Diagnostic" "lsp-types-2.0.2.0-6ldEQfFkAQaDyl5nknNRSX" 'False) (C1 ('MetaCons "Diagnostic" 'PrefixI 'True) (((S1 ('MetaSel ('Just "_range") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Range) :*: S1 ('MetaSel ('Just "_severity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe DiagnosticSeverity))) :*: (S1 ('MetaSel ('Just "_code") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe (Int32 |? Text))) :*: S1 ('MetaSel ('Just "_codeDescription") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe CodeDescription)))) :*: ((S1 ('MetaSel ('Just "_source") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe Text)) :*: S1 ('MetaSel ('Just "_message") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "_tags") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe [DiagnosticTag])) :*: (S1 ('MetaSel ('Just "_relatedInformation") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe [DiagnosticRelatedInformation])) :*: S1 ('MetaSel ('Just "_data_") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe Value)))))))

data ShowDiagnostic #

Defines whether a particular diagnostic should be reported back to the user.

One important use case is "missing signature" code lenses, for which we need to enable the corresponding warning during type checking. However, we do not want to show the warning unless the programmer asks for it (#261).

Constructors

ShowDiag | Report back to the user
HideDiag | Hide from user

#### Instances

Instances details

Show ShowDiagnostic # |
Instance details Defined in Development.IDE.Types.Diagnostics Methods showsPrec :: Int -> ShowDiagnostic -> ShowS # show :: ShowDiagnostic -> String # showList :: [ShowDiagnostic] -> ShowS #
NFData ShowDiagnostic # |
Instance details Defined in Development.IDE.Types.Diagnostics Methods rnf :: ShowDiagnostic -> () #
Eq ShowDiagnostic # |
Instance details Defined in Development.IDE.Types.Diagnostics Methods (==) :: ShowDiagnostic -> ShowDiagnostic -> Bool # (/=) :: ShowDiagnostic -> ShowDiagnostic -> Bool #
Ord ShowDiagnostic # |
Instance details Defined in Development.IDE.Types.Diagnostics Methods compare :: ShowDiagnostic -> ShowDiagnostic -> Ordering (<) :: ShowDiagnostic -> ShowDiagnostic -> Bool (<=) :: ShowDiagnostic -> ShowDiagnostic -> Bool (>) :: ShowDiagnostic -> ShowDiagnostic -> Bool (>=) :: ShowDiagnostic -> ShowDiagnostic -> Bool max :: ShowDiagnostic -> ShowDiagnostic -> ShowDiagnostic min :: ShowDiagnostic -> ShowDiagnostic -> ShowDiagnostic

type FileDiagnostic = (NormalizedFilePath, ShowDiagnostic, Diagnostic) #

Human readable diagnostics for a specific file.

This type packages a pretty printed, human readable error message along with the related source location so that we can display the error on either the console or in the IDE at the right source location.

type IdeResult v = ([FileDiagnostic], Maybe v) #

The result of an IDE operation. Warnings and errors are in the Diagnostic, and a value is in the Maybe. For operations that throw an error you expect a non-empty list of diagnostics, at least one of which is an error, and a Nothing. For operations that succeed you expect perhaps some warnings and a Just. For operations that depend on other failing operations you may get empty diagnostics and a Nothing, to indicate this phase throws no fresh errors but still failed.

A rule on a file should only return diagnostics for that given file. It should not propagate diagnostic errors through multiple phases.

data DiagnosticSeverity #

The diagnostic's severity.

Constructors

DiagnosticSeverity_Error | Reports an error.
DiagnosticSeverity_Warning | Reports a warning.
DiagnosticSeverity_Information | Reports an information.
DiagnosticSeverity_Hint | Reports a hint.

#### Instances

Instances details

FromJSON DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Methods parseJSON :: Value -> Parser DiagnosticSeverity # parseJSONList :: Value -> Parser [DiagnosticSeverity] # omittedField :: Maybe DiagnosticSeverity #
ToJSON DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Methods toJSON :: DiagnosticSeverity -> Value # toEncoding :: DiagnosticSeverity -> Encoding # toJSONList :: [DiagnosticSeverity] -> Value # toEncodingList :: [DiagnosticSeverity] -> Encoding # omitField :: DiagnosticSeverity -> Bool #
Generic DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Associated Types type Rep DiagnosticSeverity :: Type -> Type Methods from :: DiagnosticSeverity -> Rep DiagnosticSeverity x to :: Rep DiagnosticSeverity x -> DiagnosticSeverity
Show DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Methods showsPrec :: Int -> DiagnosticSeverity -> ShowS # show :: DiagnosticSeverity -> String # showList :: [DiagnosticSeverity] -> ShowS #
NFData DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Methods rnf :: DiagnosticSeverity -> () #
Eq DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Methods (==) :: DiagnosticSeverity -> DiagnosticSeverity -> Bool # (/=) :: DiagnosticSeverity -> DiagnosticSeverity -> Bool #
Ord DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Methods compare :: DiagnosticSeverity -> DiagnosticSeverity -> Ordering (<) :: DiagnosticSeverity -> DiagnosticSeverity -> Bool (<=) :: DiagnosticSeverity -> DiagnosticSeverity -> Bool (>) :: DiagnosticSeverity -> DiagnosticSeverity -> Bool (>=) :: DiagnosticSeverity -> DiagnosticSeverity -> Bool max :: DiagnosticSeverity -> DiagnosticSeverity -> DiagnosticSeverity min :: DiagnosticSeverity -> DiagnosticSeverity -> DiagnosticSeverity
Hashable DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Methods hashWithSalt :: Int -> DiagnosticSeverity -> Int # hash :: DiagnosticSeverity -> Int #
LspEnum DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Associated Types type EnumBaseType DiagnosticSeverity # Methods knownValues :: Set DiagnosticSeverity # toEnumBaseType :: DiagnosticSeverity -> EnumBaseType DiagnosticSeverity # fromEnumBaseType :: EnumBaseType DiagnosticSeverity -> Maybe DiagnosticSeverity #
Pretty DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity Methods pretty :: DiagnosticSeverity -> Doc ann # prettyList :: [DiagnosticSeverity] -> Doc ann #
HasSeverity Diagnostic (Maybe DiagnosticSeverity) |
Instance details Defined in Language.LSP.Protocol.Internal.Lens Methods severity :: Lens' Diagnostic (Maybe DiagnosticSeverity) #
type Rep DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity type Rep DiagnosticSeverity = D1 ('MetaData "DiagnosticSeverity" "Language.LSP.Protocol.Internal.Types.DiagnosticSeverity" "lsp-types-2.0.2.0-6ldEQfFkAQaDyl5nknNRSX" 'False) ((C1 ('MetaCons "DiagnosticSeverity_Error" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DiagnosticSeverity_Warning" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "DiagnosticSeverity_Information" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "DiagnosticSeverity_Hint" 'PrefixI 'False) (U1 :: Type -> Type)))
type EnumBaseType DiagnosticSeverity |
Instance details Defined in Language.LSP.Protocol.Internal.Types.DiagnosticSeverity type EnumBaseType DiagnosticSeverity = UInt

type DiagnosticStore = HashMap NormalizedUri StoreItem #

ideErrorText :: NormalizedFilePath -> Text -> FileDiagnostic #

ideErrorWithSource :: Maybe Text -> Maybe DiagnosticSeverity -> a -> Text -> (a, ShowDiagnostic, Diagnostic) #

showDiagnostics :: [FileDiagnostic] -> Text #

showDiagnosticsColored :: [FileDiagnostic] -> Text #

type IdeResultNoDiagnosticsEarlyCutoff v = (Maybe ByteString, Maybe v) #

an IdeResult with a fingerprint