ghcide-2.7.0.0: The core of an IDE

Safe Haskell | None
Language | GHC2021

Development.IDE.GHC.Compat.Parser

Contents

- API Annotations

Description

Parser compatibility module.

Synopsis

- initParserOpts :: DynFlags -> ParserOpts
- initParserState :: ParserOpts -> StringBuffer -> RealSrcLoc -> PState
- type ApiAnns = ()
- data PsSpan = PsSpan {
  - psRealSpan :: !RealSrcSpan
  - psBufSpan :: !BufSpan
  }
- pattern HsParsedModule :: Located (HsModule GhcPs) -> [FilePath] -> ApiAnns -> HsParsedModule
- data HsParsedModule
- hpm_module :: HsParsedModule -> Located (HsModule GhcPs)
- hpm_src_files :: HsParsedModule -> [FilePath]
- hpm_annotations :: HsParsedModule -> ApiAnns
- pattern ParsedModule :: ModSummary -> ParsedSource -> [FilePath] -> ApiAnns -> ParsedModule
- pm_parsed_source :: ParsedModule -> ParsedSource
- data ParsedModule
- pm_mod_summary :: ParsedModule -> ModSummary
- pm_extra_src_files :: ParsedModule -> [FilePath]
- pm_annotations :: ParsedModule -> ApiAnns
- mkApiAnns :: PState -> ApiAnns
- data AnnKeywordId
  - = AnnAnyclass
  - | AnnAs
  - | AnnBang
  - | AnnBackquote
  - | AnnBy
  - | AnnCase
  - | AnnCases
  - | AnnClass
  - | AnnClose
  - | AnnCloseB
  - | AnnCloseBU
  - | AnnCloseC
  - | AnnCloseQ
  - | AnnCloseQU
  - | AnnCloseP
  - | AnnClosePH
  - | AnnCloseS
  - | AnnColon
  - | AnnComma
  - | AnnCommaTuple
  - | AnnDarrow
  - | AnnDarrowU
  - | AnnData
  - | AnnDcolon
  - | AnnDcolonU
  - | AnnDefault
  - | AnnDeriving
  - | AnnDo
  - | AnnDot
  - | AnnDotdot
  - | AnnElse
  - | AnnEqual
  - | AnnExport
  - | AnnFamily
  - | AnnForall
  - | AnnForallU
  - | AnnForeign
  - | AnnFunId
  - | AnnGroup
  - | AnnHeader
  - | AnnHiding
  - | AnnIf
  - | AnnImport
  - | AnnIn
  - | AnnInfix
  - | AnnInstance
  - | AnnLam
  - | AnnLarrow
  - | AnnLarrowU
  - | AnnLet
  - | AnnLollyU
  - | AnnMdo
  - | AnnMinus
  - | AnnModule
  - | AnnNewtype
  - | AnnName
  - | AnnOf
  - | AnnOpen
  - | AnnOpenB
  - | AnnOpenBU
  - | AnnOpenC
  - | AnnOpenE
  - | AnnOpenEQ
  - | AnnOpenEQU
  - | AnnOpenP
  - | AnnOpenS
  - | AnnOpenPH
  - | AnnDollar
  - | AnnDollarDollar
  - | AnnPackageName
  - | AnnPattern
  - | AnnPercent
  - | AnnPercentOne
  - | AnnProc
  - | AnnQualified
  - | AnnRarrow
  - | AnnRarrowU
  - | AnnRec
  - | AnnRole
  - | AnnSafe
  - | AnnSemi
  - | AnnSimpleQuote
  - | AnnSignature
  - | AnnStatic
  - | AnnStock
  - | AnnThen
  - | AnnThTyQuote
  - | AnnTilde
  - | AnnType
  - | AnnUnit
  - | AnnUsing
  - | AnnVal
  - | AnnValStr
  - | AnnVbar
  - | AnnVia
  - | AnnWhere
  - | Annlarrowtail
  - | AnnlarrowtailU
  - | Annrarrowtail
  - | AnnrarrowtailU
  - | AnnLarrowtail
  - | AnnLarrowtailU
  - | AnnRarrowtail
  - | AnnRarrowtailU
- pattern EpaLineComment :: String -> EpaCommentTok
- pattern EpaBlockComment :: String -> EpaCommentTok

# Documentation

initParserOpts :: DynFlags -> ParserOpts #

initParserState :: ParserOpts -> StringBuffer -> RealSrcLoc -> PState #

type ApiAnns = () #

data PsSpan #

Constructors

PsSpan |

Fields

- psRealSpan :: !RealSrcSpan
- psBufSpan :: !BufSpan

#### Instances

Instances details

Data PsSpan |

Instance details

Defined in GHC.Types.SrcLoc

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> PsSpan -> c PsSpan #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c PsSpan #

toConstr :: PsSpan -> Constr #

dataTypeOf :: PsSpan -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c PsSpan) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c PsSpan) #

gmapT :: (forall b. Data b => b -> b) -> PsSpan -> PsSpan #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> PsSpan -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> PsSpan -> r #

gmapQ :: (forall d. Data d => d -> u) -> PsSpan -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> PsSpan -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> PsSpan -> m PsSpan #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> PsSpan -> m PsSpan #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> PsSpan -> m PsSpan #

Show PsSpan |
Instance details Defined in GHC.Types.SrcLoc Methods showsPrec :: Int -> PsSpan -> ShowS # show :: PsSpan -> String # showList :: [PsSpan] -> ShowS #
Eq PsSpan |
Instance details Defined in GHC.Types.SrcLoc Methods (==) :: PsSpan -> PsSpan -> Bool # (/=) :: PsSpan -> PsSpan -> Bool #
Ord PsSpan |
Instance details Defined in GHC.Types.SrcLoc Methods compare :: PsSpan -> PsSpan -> Ordering # (<) :: PsSpan -> PsSpan -> Bool # (<=) :: PsSpan -> PsSpan -> Bool # (>) :: PsSpan -> PsSpan -> Bool # (>=) :: PsSpan -> PsSpan -> Bool # max :: PsSpan -> PsSpan -> PsSpan # min :: PsSpan -> PsSpan -> PsSpan #

pattern HsParsedModule :: Located (HsModule GhcPs) -> [FilePath] -> ApiAnns -> HsParsedModule #

data HsParsedModule #

hpm_module :: HsParsedModule -> Located (HsModule GhcPs) #

hpm_src_files :: HsParsedModule -> [FilePath] #

hpm_annotations :: HsParsedModule -> ApiAnns #

pattern ParsedModule :: ModSummary -> ParsedSource -> [FilePath] -> ApiAnns -> ParsedModule #

pm_parsed_source :: ParsedModule -> ParsedSource #

data ParsedModule #

The result of successful parsing.

#### Instances

Instances details

Show ParsedModule # |
Instance details Defined in Development.IDE.GHC.Orphans Methods showsPrec :: Int -> ParsedModule -> ShowS # show :: ParsedModule -> String # showList :: [ParsedModule] -> ShowS #
NFData ParsedModule # |
Instance details Defined in Development.IDE.GHC.Orphans Methods rnf :: ParsedModule -> () #
ParsedMod ParsedModule |
Instance details Defined in GHC Methods modSummary :: ParsedModule -> ModSummary parsedSource :: ParsedModule -> ParsedSource #

pm_mod_summary :: ParsedModule -> ModSummary #

pm_extra_src_files :: ParsedModule -> [FilePath] #

pm_annotations :: ParsedModule -> ApiAnns #

mkApiAnns :: PState -> ApiAnns #

# API Annotations

data AnnKeywordId #

Exact print annotations exist so that tools can perform source to source conversions of Haskell code. They are used to keep track of the various syntactic keywords that are not otherwise captured in the AST.

The wiki page describing this feature is https://gitlab.haskell.org/ghc/ghc/wikis/api-annotations https://gitlab.haskell.org/ghc/ghc/-/wikis/implementing-trees-that-grow/in-tree-api-annotations

Note: in general the names of these are taken from the corresponding token, unless otherwise noted See Note [exact print annotations] above for details of the usage

Constructors

AnnAnyclass |
AnnAs |
AnnBang | `!`
AnnBackquote | '`'
AnnBy |
AnnCase | case or lambda case
AnnCases | lambda cases
AnnClass |
AnnClose | '#)' or '#-}' etc
AnnCloseB | '|)'
AnnCloseBU | '|)', unicode variant
AnnCloseC | '}'
AnnCloseQ | '|]'
AnnCloseQU | '|]', unicode variant
AnnCloseP | ')'
AnnClosePH | '#)'
AnnCloseS | ']'
AnnColon |
AnnComma | as a list separator
AnnCommaTuple | in a RdrName for a tuple
AnnDarrow | '=>'
AnnDarrowU | '=>', unicode variant
AnnData |
AnnDcolon | '::'
AnnDcolonU | '::', unicode variant
AnnDefault |
AnnDeriving |
AnnDo |
AnnDot | `.`
AnnDotdot | '..'
AnnElse |
AnnEqual |
AnnExport |
AnnFamily |
AnnForall |
AnnForallU | Unicode variant
AnnForeign |
AnnFunId | for function name in matches where there are multiple equations for the function.
AnnGroup |
AnnHeader | for CType
AnnHiding |
AnnIf |
AnnImport |
AnnIn |
AnnInfix | 'infix' or 'infixl' or 'infixr'
AnnInstance |
AnnLam |
AnnLarrow | '<-'
AnnLarrowU | '<-', unicode variant
AnnLet |
AnnLollyU | The `⊸` unicode arrow
AnnMdo |
AnnMinus | `-`
AnnModule |
AnnNewtype |
AnnName | where a name loses its location in the AST, this carries it
AnnOf |
AnnOpen | '{-# DEPRECATED' etc. Opening of pragmas where the capitalisation of the string can be changed by the user. The actual text used is stored in a `SourceText` on the relevant pragma item.
AnnOpenB | '(|'
AnnOpenBU | '(|', unicode variant
AnnOpenC | '{'
AnnOpenE | '[e|' or '[e||'
AnnOpenEQ | '[|'
AnnOpenEQU | '[|', unicode variant
AnnOpenP | '('
AnnOpenS | '['
AnnOpenPH | '(#'
AnnDollar | prefix `$` -- TemplateHaskell
AnnDollarDollar | prefix `$$` -- TemplateHaskell
AnnPackageName |
AnnPattern |
AnnPercent | `%` -- for HsExplicitMult
AnnPercentOne | '%1' -- for HsLinearArrow
AnnProc |
AnnQualified |
AnnRarrow | `->`
AnnRarrowU | `->`, unicode variant
AnnRec |
AnnRole |
AnnSafe |
AnnSemi | ';'
AnnSimpleQuote | '''
AnnSignature |
AnnStatic | `static`
AnnStock |
AnnThen |
AnnThTyQuote | double '''
AnnTilde | `~`
AnnType |
AnnUnit | `()` for types
AnnUsing |
AnnVal | e.g. INTEGER
AnnValStr | String value, will need quotes when output
AnnVbar | '|'
AnnVia | `via`
AnnWhere |
Annlarrowtail | `-<`
AnnlarrowtailU | `-<`, unicode variant
Annrarrowtail | `->`
AnnrarrowtailU | `->`, unicode variant
AnnLarrowtail | `-<<`
AnnLarrowtailU | `-<<`, unicode variant
AnnRarrowtail | `>>-`
AnnRarrowtailU | `>>-`, unicode variant

#### Instances

Instances details

Data AnnKeywordId |

Instance details

Defined in GHC.Parser.Annotation

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AnnKeywordId -> c AnnKeywordId #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AnnKeywordId #

toConstr :: AnnKeywordId -> Constr #

dataTypeOf :: AnnKeywordId -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AnnKeywordId) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AnnKeywordId) #

gmapT :: (forall b. Data b => b -> b) -> AnnKeywordId -> AnnKeywordId #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AnnKeywordId -> r #

gmapQ :: (forall d. Data d => d -> u) -> AnnKeywordId -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> AnnKeywordId -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AnnKeywordId -> m AnnKeywordId #

Show AnnKeywordId |
Instance details Defined in GHC.Parser.Annotation Methods showsPrec :: Int -> AnnKeywordId -> ShowS # show :: AnnKeywordId -> String # showList :: [AnnKeywordId] -> ShowS #
Outputable AnnKeywordId |
Instance details Defined in GHC.Parser.Annotation Methods ppr :: AnnKeywordId -> SDoc #
Eq AnnKeywordId |
Instance details Defined in GHC.Parser.Annotation Methods (==) :: AnnKeywordId -> AnnKeywordId -> Bool # (/=) :: AnnKeywordId -> AnnKeywordId -> Bool #
Ord AnnKeywordId |

Instance details

Defined in GHC.Parser.Annotation

Methods

compare :: AnnKeywordId -> AnnKeywordId -> Ordering #

(<) :: AnnKeywordId -> AnnKeywordId -> Bool #

(<=) :: AnnKeywordId -> AnnKeywordId -> Bool #

(>) :: AnnKeywordId -> AnnKeywordId -> Bool #

(>=) :: AnnKeywordId -> AnnKeywordId -> Bool #

max :: AnnKeywordId -> AnnKeywordId -> AnnKeywordId #

min :: AnnKeywordId -> AnnKeywordId -> AnnKeywordId #

pattern EpaLineComment :: String -> EpaCommentTok #

comment starting by "--"

pattern EpaBlockComment :: String -> EpaCommentTok #

comment in {- -}