diagnose-1.7.0: Beautiful error reporting done easily
Copyright(c) Mesabloo 2021
LicenseBSD3
Stabilityexperimental
PortabilityPortable
Safe HaskellNone
LanguageHaskell2010

Error.Diagnose.Diagnostic

Contents

Description

 
Synopsis

Re-exports

stdout :: Handle #

A handle managing output to the Haskell program's standard output channel.

stderr :: Handle #

A handle managing output to the Haskell program's standard error channel.

def :: Default a => a #

The default value for this type.

data Diagnostic msg Source #

The data type for diagnostic containing messages of an abstract type.

The constructors are private, but users can use def from the Default typeclass to create a new empty diagnostic, and addFile and addReport to alter its internal state.

Instances

Instances details
Semigroup (Diagnostic msg) Source # 
Instance details

Defined in Error.Diagnose.Diagnostic.Internal

Methods

(<>) :: Diagnostic msg -> Diagnostic msg -> Diagnostic msg #

sconcat :: NonEmpty (Diagnostic msg) -> Diagnostic msg #

stimes :: Integral b => b -> Diagnostic msg -> Diagnostic msg #

ToJSON msg => ToJSON (Diagnostic msg) Source # 
Instance details

Defined in Error.Diagnose.Diagnostic.Internal

Default (Diagnostic msg) Source # 
Instance details

Defined in Error.Diagnose.Diagnostic.Internal

Methods

def :: Diagnostic msg #

printDiagnostic Source #

Arguments

:: (MonadIO m, Pretty msg) 
=> Handle

The handle onto which to output the diagnostic.

-> Bool

Should we print with unicode characters?

-> Bool

False to disable colors.

-> Diagnostic msg

The diagnostic to output.

-> m () 

Prints a Diagnostic onto a specific Handle.

addFile Source #

Arguments

:: Diagnostic msg 
-> FilePath

The path to the file.

-> String

The content of the file as a single string, where lines are ended by n.

-> Diagnostic msg 

Inserts a new referenceable file within the diagnostic.

addReport Source #

Arguments

:: Diagnostic msg 
-> Report msg

The new report to add to the diagnostic.

-> Diagnostic msg 

Inserts a new report into a diagnostic.

diagnosticToJson :: ToJSON msg => Diagnostic msg -> ByteString Source #

Creates a JSON object from a diagnostic, containing those fields (only types are indicated):

{ files:
    { name: string
    , content: string[]
    }[]
, reports:
    { kind: 'error' | 'warning'
    , code: T?
    , message: T
    , markers:
        { kind: 'this' | 'where' | 'maybe'
        , position:
            { beginning: { line: int, column: int }
            , end: { line: int, column: int }
            , file: string
            }
        , message: T
        }[]
    , hints: T[]
    }[]
}

where T is the type of the JSON representation for the msg type variable.