Moduleghc-9.10.3GHC2021
GHC.Parser.Types
- 3 types
- 1 value
- Packageghc-9.10.3
- Exports4
- LanguageGHC2021
- LicenceBSD-3-Clause
- SourceTypes.hs
See Note [Ambiguous syntactic categories] and Note [PatBuilder]
Constructors
PatBuilderPat (Pat p)PatBuilderPar (EpToken"("
) (LocatedA (PatBuilder p)) (EpToken")"
)PatBuilderApp (LocatedA (PatBuilder p)) (LocatedA (PatBuilder p))PatBuilderAppType (LocatedA (PatBuilder p)) (EpToken"@"
) (HsTyPat GhcPs)PatBuilderOpApp (LocatedA (PatBuilder p)) (LocatedN RdrName) (LocatedA (PatBuilder p)) [AddEpAnn]PatBuilderVar (LocatedN RdrName)PatBuilderOverLit (HsOverLit GhcPs)
Instances10Outputable, DisambECP, Anno, Body, FunArg, InfixOp, …
Outputable (PatBuilder GhcPs)Defined in ghc-9.10.3 · GHC.Parser.TypesDisambECP (PatBuilder GhcPs)Defined in ghc-9.10.3 · GHC.Parser.PostProcesstype Anno (GRHS GhcPs (LocatedA (PatBuilder GhcPs))) = EpAnnCODefined in ghc-9.10.3 · GHC.Parser.Typestype Anno (Match GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnADefined in ghc-9.10.3 · GHC.Parser.Typestype Anno (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs))) = SrcSpanAnnADefined in ghc-9.10.3 · GHC.Parser.Typestype Anno [LocatedA (Match GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnLDefined in ghc-9.10.3 · GHC.Parser.Typestype Anno [LocatedA (StmtLR GhcPs GhcPs (LocatedA (PatBuilder GhcPs)))] = SrcSpanAnnLDefined in ghc-9.10.3 · GHC.Parser.Typestype Body (PatBuilder GhcPs) = PatBuilderDefined in ghc-9.10.3 · GHC.Parser.PostProcesstype FunArg (PatBuilder GhcPs) = PatBuilder GhcPsDefined in ghc-9.10.3 · GHC.Parser.PostProcesstype InfixOp (PatBuilder GhcPs) = RdrNameDefined in ghc-9.10.3 · GHC.Parser.PostProcess
An accumulator to build a prefix data constructor,
e.g. when parsing MkT A B C, the accumulator will evolve as follows:
1. PrefixDataConBuilder [] MkT
2. PrefixDataConBuilder [A] MkT
3. PrefixDataConBuilder [A, B] MkT
4. PrefixDataConBuilder [A, B, C] MkT
There are two reasons we have a separate builder type instead of using
HsConDeclDetails GhcPs directly:
It's faster, because OrdList gives us constant-time snoc.
Having a separate type helps ensure that we don't forget to finalize a
RecTyinto a RecCon (we do that indataConBuilderDetails).
See Note [PatBuilder] for another builder type used in the parser. Here the technique is similar, but the motivation is different.
Instances2Outputable, DisambTD
Outputable DataConBuilderDefined in ghc-9.10.3 · GHC.Parser.TypesDisambTD DataConBuilderDefined in ghc-9.10.3 · GHC.Parser.PostProcess