ghc-8.2.2: The GHC API

Safe Haskell | None
Language | Haskell2010

HsExpr

Contents

- Expressions proper

Description

Abstract Haskell syntax for expressions.

Synopsis

- type LHsExpr id = Located (HsExpr id)
- type PostTcExpr = HsExpr Id
- type PostTcTable = [(Name, PostTcExpr)]
- noPostTcExpr :: PostTcExpr
- noPostTcTable :: PostTcTable
- data SyntaxExpr id = SyntaxExpr {
  - syn_expr :: HsExpr id
  - syn_arg_wraps :: [HsWrapper]
  - syn_res_wrap :: HsWrapper
  }
- noExpr :: HsExpr id
- noSyntaxExpr :: SyntaxExpr id
- mkRnSyntaxExpr :: Name -> SyntaxExpr Name
- type CmdSyntaxTable id = [(Name, HsExpr id)]
- data UnboundVar
  - = OutOfScope OccName GlobalRdrEnv
  - | TrueExprHole OccName
- unboundVarOcc :: UnboundVar -> OccName
- data HsExpr id
  - = HsVar (Located id)
  - | HsUnboundVar UnboundVar
  - | HsConLikeOut ConLike
  - | HsRecFld (AmbiguousFieldOcc id)
  - | HsOverLabel (Maybe id) FastString
  - | HsIPVar HsIPName
  - | HsOverLit (HsOverLit id)
  - | HsLit HsLit
  - | HsLam (MatchGroup id (LHsExpr id))
  - | HsLamCase (MatchGroup id (LHsExpr id))
  - | HsApp (LHsExpr id) (LHsExpr id)
  - | HsAppType (LHsExpr id) (LHsWcType id)
  - | HsAppTypeOut (LHsExpr id) (LHsWcType Name)
  - | OpApp (LHsExpr id) (LHsExpr id) (PostRn id Fixity) (LHsExpr id)
  - | NegApp (LHsExpr id) (SyntaxExpr id)
  - | HsPar (LHsExpr id)
  - | SectionL (LHsExpr id) (LHsExpr id)
  - | SectionR (LHsExpr id) (LHsExpr id)
  - | ExplicitTuple [LHsTupArg id] Boxity
  - | ExplicitSum ConTag Arity (LHsExpr id) (PostTc id [Type])
  - | HsCase (LHsExpr id) (MatchGroup id (LHsExpr id))
  - | HsIf (Maybe (SyntaxExpr id)) (LHsExpr id) (LHsExpr id) (LHsExpr id)
  - | HsMultiIf (PostTc id Type) [LGRHS id (LHsExpr id)]
  - | HsLet (LHsLocalBinds id) (LHsExpr id)
  - | HsDo (HsStmtContext Name) (Located [ExprLStmt id]) (PostTc id Type)
  - | ExplicitList (PostTc id Type) (Maybe (SyntaxExpr id)) [LHsExpr id]
  - | ExplicitPArr (PostTc id Type) [LHsExpr id]
  - | RecordCon {
    - rcon_con_name :: Located id
    - rcon_con_like :: PostTc id ConLike
    - rcon_con_expr :: PostTcExpr
    - rcon_flds :: HsRecordBinds id
    }
  - | RecordUpd {
    - rupd_expr :: LHsExpr id
    - rupd_flds :: [LHsRecUpdField id]
    - rupd_cons :: PostTc id [ConLike]
    - rupd_in_tys :: PostTc id [Type]
    - rupd_out_tys :: PostTc id [Type]
    - rupd_wrap :: PostTc id HsWrapper
    }
  - | ExprWithTySig (LHsExpr id) (LHsSigWcType id)
  - | ExprWithTySigOut (LHsExpr id) (LHsSigWcType Name)
  - | ArithSeq PostTcExpr (Maybe (SyntaxExpr id)) (ArithSeqInfo id)
  - | PArrSeq PostTcExpr (ArithSeqInfo id)
  - | HsSCC SourceText StringLiteral (LHsExpr id)
  - | HsCoreAnn SourceText StringLiteral (LHsExpr id)
  - | HsBracket (HsBracket id)
  - | HsRnBracketOut (HsBracket Name) [PendingRnSplice]
  - | HsTcBracketOut (HsBracket Name) [PendingTcSplice]
  - | HsSpliceE (HsSplice id)
  - | HsProc (LPat id) (LHsCmdTop id)
  - | HsStatic (PostRn id NameSet) (LHsExpr id)
  - | HsArrApp (LHsExpr id) (LHsExpr id) (PostTc id Type) HsArrAppType Bool
  - | HsArrForm (LHsExpr id) (Maybe Fixity) [LHsCmdTop id]
  - | HsTick (Tickish id) (LHsExpr id)
  - | HsBinTick Int Int (LHsExpr id)
  - | HsTickPragma SourceText (StringLiteral, (Int, Int), (Int, Int)) ((SourceText, SourceText), (SourceText, SourceText)) (LHsExpr id)
  - | EWildPat
  - | EAsPat (Located id) (LHsExpr id)
  - | EViewPat (LHsExpr id) (LHsExpr id)
  - | ELazyPat (LHsExpr id)
  - | HsWrap HsWrapper (HsExpr id)
- type LHsTupArg id = Located (HsTupArg id)
- data HsTupArg id
  - = Present (LHsExpr id)
  - | Missing (PostTc id Type)
- tupArgPresent :: LHsTupArg id -> Bool
- pprLExpr :: OutputableBndrId id => LHsExpr id -> SDoc
- pprExpr :: OutputableBndrId id => HsExpr id -> SDoc
- isQuietHsExpr :: HsExpr id -> Bool
- pprBinds :: (OutputableBndrId idL, OutputableBndrId idR) => HsLocalBindsLR idL idR -> SDoc
- ppr_lexpr :: OutputableBndrId id => LHsExpr id -> SDoc
- ppr_expr :: forall id. OutputableBndrId id => HsExpr id -> SDoc
- data LHsWcTypeX = OutputableBndrId id => LHsWcTypeX (LHsWcType id)
- ppr_apps :: OutputableBndrId id => HsExpr id -> [Either (LHsExpr id) LHsWcTypeX] -> SDoc
- pprExternalSrcLoc :: (StringLiteral, (Int, Int), (Int, Int)) -> SDoc
- pprDebugParendExpr :: OutputableBndrId id => LHsExpr id -> SDoc
- pprParendLExpr :: OutputableBndrId id => LHsExpr id -> SDoc
- pprParendExpr :: OutputableBndrId id => HsExpr id -> SDoc
- hsExprNeedsParens :: HsExpr id -> Bool
- isAtomicHsExpr :: HsExpr id -> Bool
- type LHsCmd id = Located (HsCmd id)
- data HsCmd id
  - = HsCmdArrApp (LHsExpr id) (LHsExpr id) (PostTc id Type) HsArrAppType Bool
  - | HsCmdArrForm (LHsExpr id) LexicalFixity (Maybe Fixity) [LHsCmdTop id]
  - | HsCmdApp (LHsCmd id) (LHsExpr id)
  - | HsCmdLam (MatchGroup id (LHsCmd id))
  - | HsCmdPar (LHsCmd id)
  - | HsCmdCase (LHsExpr id) (MatchGroup id (LHsCmd id))
  - | HsCmdIf (Maybe (SyntaxExpr id)) (LHsExpr id) (LHsCmd id) (LHsCmd id)
  - | HsCmdLet (LHsLocalBinds id) (LHsCmd id)
  - | HsCmdDo (Located [CmdLStmt id]) (PostTc id Type)
  - | HsCmdWrap HsWrapper (HsCmd id)
- data HsArrAppType
  - = HsHigherOrderApp
  - | HsFirstOrderApp
- type LHsCmdTop id = Located (HsCmdTop id)
- data HsCmdTop id = HsCmdTop (LHsCmd id) (PostTc id Type) (PostTc id Type) (CmdSyntaxTable id)
- pprLCmd :: OutputableBndrId id => LHsCmd id -> SDoc
- pprCmd :: OutputableBndrId id => HsCmd id -> SDoc
- isQuietHsCmd :: HsCmd id -> Bool
- ppr_lcmd :: OutputableBndrId id => LHsCmd id -> SDoc
- ppr_cmd :: forall id. OutputableBndrId id => HsCmd id -> SDoc
- pprCmdArg :: OutputableBndrId id => HsCmdTop id -> SDoc
- type HsRecordBinds id = HsRecFields id (LHsExpr id)
- data MatchGroup id body = MG {
  - mg_alts :: Located [LMatch id body]
  - mg_arg_tys :: [PostTc id Type]
  - mg_res_ty :: PostTc id Type
  - mg_origin :: Origin
  }
- type LMatch id body = Located (Match id body)
- data Match id body = Match {
  - m_ctxt :: HsMatchContext (NameOrRdrName id)
  - m_pats :: [LPat id]
  - m_type :: Maybe (LHsType id)
  - m_grhss :: GRHSs id body
  }
- isInfixMatch :: Match id body -> Bool
- isEmptyMatchGroup :: MatchGroup id body -> Bool
- isSingletonMatchGroup :: [LMatch id body] -> Bool
- matchGroupArity :: MatchGroup id body -> Arity
- hsLMatchPats :: LMatch id body -> [LPat id]
- data GRHSs id body = GRHSs {
  - grhssGRHSs :: [LGRHS id body]
  - grhssLocalBinds :: LHsLocalBinds id
  }
- type LGRHS id body = Located (GRHS id body)
- data GRHS id body = GRHS [GuardLStmt id] body
- pprMatches :: (OutputableBndrId idR, Outputable body) => MatchGroup idR body -> SDoc
- pprFunBind :: (OutputableBndrId idR, Outputable body) => MatchGroup idR body -> SDoc
- pprPatBind :: forall bndr id body. (OutputableBndrId bndr, OutputableBndrId id, Outputable body) => LPat bndr -> GRHSs id body -> SDoc
- pprMatch :: (OutputableBndrId idR, Outputable body) => Match idR body -> SDoc
- pprGRHSs :: (OutputableBndrId idR, Outputable body) => HsMatchContext idL -> GRHSs idR body -> SDoc
- pprGRHS :: (OutputableBndrId idR, Outputable body) => HsMatchContext idL -> GRHS idR body -> SDoc
- pp_rhs :: Outputable body => HsMatchContext idL -> body -> SDoc
- type LStmt id body = Located (StmtLR id id body)
- type LStmtLR idL idR body = Located (StmtLR idL idR body)
- type Stmt id body = StmtLR id id body
- type CmdLStmt id = LStmt id (LHsCmd id)
- type CmdStmt id = Stmt id (LHsCmd id)
- type ExprLStmt id = LStmt id (LHsExpr id)
- type ExprStmt id = Stmt id (LHsExpr id)
- type GuardLStmt id = LStmt id (LHsExpr id)
- type GuardStmt id = Stmt id (LHsExpr id)
- type GhciLStmt id = LStmt id (LHsExpr id)
- type GhciStmt id = Stmt id (LHsExpr id)
- data StmtLR idL idR body
  - = LastStmt body Bool (SyntaxExpr idR)
  - | BindStmt (LPat idL) body (SyntaxExpr idR) (SyntaxExpr idR) (PostTc idR Type)
  - | ApplicativeStmt [(SyntaxExpr idR, ApplicativeArg idL idR)] (Maybe (SyntaxExpr idR)) (PostTc idR Type)
  - | BodyStmt body (SyntaxExpr idR) (SyntaxExpr idR) (PostTc idR Type)
  - | LetStmt (LHsLocalBindsLR idL idR)
  - | ParStmt [ParStmtBlock idL idR] (HsExpr idR) (SyntaxExpr idR) (PostTc idR Type)
  - | TransStmt {
    - trS_form :: TransForm
    - trS_stmts :: [ExprLStmt idL]
    - trS_bndrs :: [(idR, idR)]
    - trS_using :: LHsExpr idR
    - trS_by :: Maybe (LHsExpr idR)
    - trS_ret :: SyntaxExpr idR
    - trS_bind :: SyntaxExpr idR
    - trS_bind_arg_ty :: PostTc idR Type
    - trS_fmap :: HsExpr idR
    }
  - | RecStmt {
    - recS_stmts :: [LStmtLR idL idR body]
    - recS_later_ids :: [idR]
    - recS_rec_ids :: [idR]
    - recS_bind_fn :: SyntaxExpr idR
    - recS_ret_fn :: SyntaxExpr idR
    - recS_mfix_fn :: SyntaxExpr idR
    - recS_bind_ty :: PostTc idR Type
    - recS_later_rets :: [PostTcExpr]
    - recS_rec_rets :: [PostTcExpr]
    - recS_ret_ty :: PostTc idR Type
    }
- data TransForm
  - = ThenForm
  - | GroupForm
- data ParStmtBlock idL idR = ParStmtBlock [ExprLStmt idL] [idR] (SyntaxExpr idR)
- data ApplicativeArg idL idR
  - = ApplicativeArgOne (LPat idL) (LHsExpr idL)
  - | ApplicativeArgMany [ExprLStmt idL] (HsExpr idL) (LPat idL)
- pprStmt :: forall idL idR body. (OutputableBndrId idL, OutputableBndrId idR, Outputable body) => StmtLR idL idR body -> SDoc
- pprTransformStmt :: OutputableBndrId id => [id] -> LHsExpr id -> Maybe (LHsExpr id) -> SDoc
- pprTransStmt :: Outputable body => Maybe body -> body -> TransForm -> SDoc
- pprBy :: Outputable body => Maybe body -> SDoc
- pprDo :: (OutputableBndrId id, Outputable body) => HsStmtContext any -> [LStmt id body] -> SDoc
- ppr_do_stmts :: (OutputableBndrId idL, OutputableBndrId idR, Outputable body) => [LStmtLR idL idR body] -> SDoc
- pprComp :: (OutputableBndrId id, Outputable body) => [LStmt id body] -> SDoc
- pprQuals :: (OutputableBndrId id, Outputable body) => [LStmt id body] -> SDoc
- data HsSplice id
  - = HsTypedSplice SpliceDecoration id (LHsExpr id)
  - | HsUntypedSplice SpliceDecoration id (LHsExpr id)
  - | HsQuasiQuote id id SrcSpan FastString
  - | HsSpliced ThModFinalizers (HsSplicedThing id)
- data SpliceDecoration
  - = HasParens
  - | HasDollar
  - | NoParens
- isTypedSplice :: HsSplice id -> Bool
- newtype ThModFinalizers = ThModFinalizers [ForeignRef (Q ())]
- data HsSplicedThing id
  - = HsSplicedExpr (HsExpr id)
  - | HsSplicedTy (HsType id)
  - | HsSplicedPat (Pat id)
- type SplicePointName = Name
- data PendingRnSplice = PendingRnSplice UntypedSpliceFlavour SplicePointName (LHsExpr Name)
- data UntypedSpliceFlavour
  - = UntypedExpSplice
  - | UntypedPatSplice
  - | UntypedTypeSplice
  - | UntypedDeclSplice
- data PendingTcSplice = PendingTcSplice SplicePointName (LHsExpr Id)
- pprPendingSplice :: OutputableBndrId id => SplicePointName -> LHsExpr id -> SDoc
- pprSpliceDecl :: OutputableBndrId id => HsSplice id -> SpliceExplicitFlag -> SDoc
- ppr_splice_decl :: OutputableBndrId id => HsSplice id -> SDoc
- pprSplice :: OutputableBndrId id => HsSplice id -> SDoc
- ppr_quasi :: OutputableBndr id => id -> id -> FastString -> SDoc
- ppr_splice :: OutputableBndrId id => SDoc -> id -> LHsExpr id -> SDoc -> SDoc
- data HsBracket id
  - = ExpBr (LHsExpr id)
  - | PatBr (LPat id)
  - | DecBrL [LHsDecl id]
  - | DecBrG (HsGroup id)
  - | TypBr (LHsType id)
  - | VarBr Bool id
  - | TExpBr (LHsExpr id)
- isTypedBracket :: HsBracket id -> Bool
- pprHsBracket :: OutputableBndrId id => HsBracket id -> SDoc
- thBrackets :: SDoc -> SDoc -> SDoc
- thTyBrackets :: SDoc -> SDoc
- data ArithSeqInfo id
  - = From (LHsExpr id)
  - | FromThen (LHsExpr id) (LHsExpr id)
  - | FromTo (LHsExpr id) (LHsExpr id)
  - | FromThenTo (LHsExpr id) (LHsExpr id) (LHsExpr id)
- pp_dotdot :: SDoc
- data HsMatchContext id
  - = FunRhs {
    - mc_fun :: Located id
    - mc_fixity :: LexicalFixity
    - mc_strictness :: SrcStrictness
    }
  - | LambdaExpr
  - | CaseAlt
  - | IfAlt
  - | ProcExpr
  - | PatBindRhs
  - | RecUpd
  - | StmtCtxt (HsStmtContext id)
  - | ThPatSplice
  - | ThPatQuote
  - | PatSyn
- isPatSynCtxt :: HsMatchContext id -> Bool
- data HsStmtContext id
  - = ListComp
  - | MonadComp
  - | PArrComp
  - | DoExpr
  - | MDoExpr
  - | ArrowExpr
  - | GhciStmtCtxt
  - | PatGuard (HsMatchContext id)
  - | ParStmtCtxt (HsStmtContext id)
  - | TransStmtCtxt (HsStmtContext id)
- isListCompExpr :: HsStmtContext id -> Bool
- isMonadCompExpr :: HsStmtContext id -> Bool
- isMonadFailStmtContext :: HsStmtContext id -> Bool
- matchSeparator :: HsMatchContext id -> SDoc
- pprMatchContext :: (Outputable (NameOrRdrName id), Outputable id) => HsMatchContext id -> SDoc
- pprMatchContextNoun :: (Outputable (NameOrRdrName id), Outputable id) => HsMatchContext id -> SDoc
- pprAStmtContext :: (Outputable id, Outputable (NameOrRdrName id)) => HsStmtContext id -> SDoc
- pprStmtContext :: (Outputable id, Outputable (NameOrRdrName id)) => HsStmtContext id -> SDoc
- matchContextErrString :: Outputable id => HsMatchContext id -> SDoc
- pprMatchInCtxt :: (OutputableBndrId idR, Outputable (NameOrRdrName (NameOrRdrName idR)), Outputable body) => Match idR body -> SDoc
- pprStmtInCtxt :: (OutputableBndrId idL, OutputableBndrId idR, Outputable body) => HsStmtContext idL -> StmtLR idL idR body -> SDoc

# Expressions proper

type LHsExpr id #

Arguments

= Located (HsExpr id) | May have `AnnKeywordId` : `AnnComma` when in a list

Located Haskell Expression

type PostTcExpr = HsExpr Id #

Post-Type checking Expression

PostTcExpr is an evidence expression attached to the syntax tree by the type checker (c.f. postTcType).

type PostTcTable = [(Name, PostTcExpr)] #

Post-Type checking Table

We use a PostTcTable where there are a bunch of pieces of evidence, more than is convenient to keep individually.

noPostTcExpr :: PostTcExpr #

noPostTcTable :: PostTcTable #

data SyntaxExpr id #

Syntax Expression

SyntaxExpr is like `PostTcExpr`, but it's filled in a little earlier, by the renamer. It's used for rebindable syntax.

E.g. `(>>=)` is filled in before the renamer by the appropriate `Name` for `(>>=)`, and then instantiated by the type checker with its type args etc

This should desugar to

    syn_res_wrap $ syn_expr (syn_arg_wraps[0] arg0)
                            (syn_arg_wraps[1] arg1) ...

where the actual arguments come from elsewhere in the AST. This could be defined using `PostRn` and `PostTc` and such, but it's harder to get it all to work out that way. (`noSyntaxExpr` is hard to write, for example.)

Constructors

SyntaxExpr |

Fields

- syn_expr :: HsExpr id
- syn_arg_wraps :: [HsWrapper]
- syn_res_wrap :: HsWrapper

Instances

DataId id => Data (SyntaxExpr id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SyntaxExpr id -> c (SyntaxExpr id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (SyntaxExpr id) Source #

toConstr :: SyntaxExpr id -> Constr Source #

dataTypeOf :: SyntaxExpr id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (SyntaxExpr id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (SyntaxExpr id)) Source #

gmapT :: (forall b. Data b => b -> b) -> SyntaxExpr id -> SyntaxExpr id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SyntaxExpr id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SyntaxExpr id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> SyntaxExpr id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SyntaxExpr id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SyntaxExpr id -> m (SyntaxExpr id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SyntaxExpr id -> m (SyntaxExpr id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SyntaxExpr id -> m (SyntaxExpr id) Source #

OutputableBndrId id => Outputable (SyntaxExpr id) # |
Methods ppr :: SyntaxExpr id -> SDoc # pprPrec :: Rational -> SyntaxExpr id -> SDoc #

noExpr :: HsExpr id #

This is used for rebindable-syntax pieces that are too polymorphic for tcSyntaxOp (trS_fmap and the mzip in ParStmt)

noSyntaxExpr :: SyntaxExpr id #

mkRnSyntaxExpr :: Name -> SyntaxExpr Name #

Make a 'SyntaxExpr Name' (the "rn" is because this is used in the renamer), missing its HsWrappers.

type CmdSyntaxTable id = [(Name, HsExpr id)] #

Command Syntax Table (for Arrow syntax)

data UnboundVar #

An unbound variable; used for treating out-of-scope variables as expression holes

Constructors

OutOfScope OccName GlobalRdrEnv | An (unqualified) out-of-scope variable, together with the GlobalRdrEnv with respect to which it is unbound
TrueExprHole OccName | A "true" expression hole (_ or _x)

Instances

Data UnboundVar # |

Methods

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

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

toConstr :: UnboundVar -> Constr Source #

dataTypeOf :: UnboundVar -> DataType Source #

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

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

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

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

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

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

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

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

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

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

Outputable UnboundVar # |
Methods ppr :: UnboundVar -> SDoc # pprPrec :: Rational -> UnboundVar -> SDoc #

unboundVarOcc :: UnboundVar -> OccName #

data HsExpr id #

A Haskell expression.

Constructors

HsVar (Located id) | Variable
HsUnboundVar UnboundVar | Unbound variable; also used for "holes" (_ or _x). Turned from HsVar to HsUnboundVar by the renamer, when it finds an out-of-scope variable or hole. Turned into HsVar by type checker, to support deferred type errors.
HsConLikeOut ConLike | After typechecker only; must be different HsVar for pretty printing
HsRecFld (AmbiguousFieldOcc id) | Variable pointing to record selector Not in use after typechecking
HsOverLabel (Maybe id) FastString | Overloaded label (Note [Overloaded labels] in GHC.OverloadedLabels) `Just id` means `RebindableSyntax` is in use, and gives the id of the in-scope `fromLabel`. NB: Not in use after typechecking
HsIPVar HsIPName | Implicit parameter (not in use after typechecking)
HsOverLit (HsOverLit id) | Overloaded literals
HsLit HsLit | Simple (non-overloaded) literals

HsLam (MatchGroup id (LHsExpr id))

Lambda abstraction. Currently always a single match

- `AnnKeywordId` : `AnnLam`, `AnnRarrow`,

HsLamCase (MatchGroup id (LHsExpr id))

Lambda-case

- `AnnKeywordId` : `AnnLam`, `AnnCase`,`AnnOpen`, `AnnClose`

HsApp (LHsExpr id) (LHsExpr id) | Application

HsAppType (LHsExpr id) (LHsWcType id)

Visible type application

Explicit type argument; e.g f @Int x y NB: Has wildcards, but no implicit quantification

- `AnnKeywordId` : `AnnAt`,

HsAppTypeOut (LHsExpr id) (LHsWcType Name) |
OpApp (LHsExpr id) (LHsExpr id) (PostRn id Fixity) (LHsExpr id) | Operator applications: NB Bracketed ops such as (+) come out as Vars.

NegApp (LHsExpr id) (SyntaxExpr id)

Negation operator. Contains the negated expression and the name of `negate`

- `AnnKeywordId` : `AnnMinus`

HsPar (LHsExpr id) | Parenthesised expr; see Note [Parens in HsSyn]
SectionL (LHsExpr id) (LHsExpr id) |
SectionR (LHsExpr id) (LHsExpr id) |

ExplicitTuple [LHsTupArg id] Boxity

Used for explicit tuples and sections thereof

- `AnnKeywordId` : `AnnOpen`, `AnnClose`

ExplicitSum ConTag Arity (LHsExpr id) (PostTc id [Type])

Used for unboxed sum types

- `AnnKeywordId` : `AnnOpen` `'(#'`, `AnnVbar`, `AnnClose` `'#)'`,

There will be multiple `AnnVbar`, (1 - alternative) before the expression, (arity - alternative) after it

HsCase (LHsExpr id) (MatchGroup id (LHsExpr id))

- `AnnKeywordId` : `AnnCase`, `AnnOf`,`AnnOpen` `'{'`, `AnnClose` `'}'`

HsIf (Maybe (SyntaxExpr id)) (LHsExpr id) (LHsExpr id) (LHsExpr id)

- `AnnKeywordId` : `AnnIf`, `AnnSemi`, `AnnThen`,`AnnSemi`, `AnnElse`,

HsMultiIf (PostTc id Type) [LGRHS id (LHsExpr id)]

Multi-way if

- `AnnKeywordId` : `AnnIf` `AnnOpen`,`AnnClose`,

HsLet (LHsLocalBinds id) (LHsExpr id)

let(rec)

- `AnnKeywordId` : `AnnLet`, `AnnOpen` `'{'`, `AnnClose` `'}'`,`AnnIn`

HsDo (HsStmtContext Name) (Located [ExprLStmt id]) (PostTc id Type)

- `AnnKeywordId` : `AnnDo`, `AnnOpen`, `AnnSemi`, `AnnVbar`, `AnnClose`

ExplicitList (PostTc id Type) (Maybe (SyntaxExpr id)) [LHsExpr id]

Syntactic list: [a,b,c,...]

- `AnnKeywordId` : `AnnOpen` `'['`, `AnnClose` `']'`

ExplicitPArr (PostTc id Type) [LHsExpr id]

Syntactic parallel array: [:e1, ..., en:]

- `AnnKeywordId` : `AnnOpen` `'[:'`, `AnnDotdot`,`AnnComma`, `AnnVbar` `AnnClose` `':]'`

RecordCon

Record construction

- `AnnKeywordId` : `AnnOpen` `'{'`, `AnnDotdot`,`AnnClose` `'}'`

Fields

- rcon_con_name :: Located id
- rcon_con_like :: PostTc id ConLike
- rcon_con_expr :: PostTcExpr
- rcon_flds :: HsRecordBinds id

RecordUpd

Record update

- `AnnKeywordId` : `AnnOpen` `'{'`, `AnnDotdot`,`AnnClose` `'}'`

Fields

- rupd_expr :: LHsExpr id
- rupd_flds :: [LHsRecUpdField id]
- rupd_cons :: PostTc id [ConLike]
- rupd_in_tys :: PostTc id [Type]
- rupd_out_tys :: PostTc id [Type]
- rupd_wrap :: PostTc id HsWrapper

ExprWithTySig (LHsExpr id) (LHsSigWcType id)

Expression with an explicit type signature. `e :: type`

- `AnnKeywordId` : `AnnDcolon`

ExprWithTySigOut (LHsExpr id) (LHsSigWcType Name) |

ArithSeq PostTcExpr (Maybe (SyntaxExpr id)) (ArithSeqInfo id)

Arithmetic sequence

- `AnnKeywordId` : `AnnOpen` `'['`, `AnnComma`,`AnnDotdot`, `AnnClose` `']'`

PArrSeq PostTcExpr (ArithSeqInfo id)

Arithmetic sequence for parallel array

    [:e1..e2:] or [:e1, e2..e3:]

- `AnnKeywordId` : `AnnOpen` `'[:'`, `AnnComma`,`AnnDotdot`, `AnnVbar`, `AnnClose` `':]'`

HsSCC SourceText StringLiteral (LHsExpr id)

- `AnnKeywordId` : `AnnOpen` `'{-# SCC'`, `AnnVal` or `AnnValStr`, `AnnClose` `'#-}'`

HsCoreAnn SourceText StringLiteral (LHsExpr id)

- `AnnKeywordId` : `AnnOpen` `'{-# CORE'`, `AnnVal`, `AnnClose` `'#-}'`

HsBracket (HsBracket id)

- `AnnKeywordId` : `AnnOpen`, `AnnOpenE`,`AnnOpenEQ`, `AnnClose`,`AnnCloseQ`

HsRnBracketOut (HsBracket Name) [PendingRnSplice] |
HsTcBracketOut (HsBracket Name) [PendingTcSplice] |

HsSpliceE (HsSplice id)

- `AnnKeywordId` : `AnnOpen`, `AnnClose`

HsProc (LPat id) (LHsCmdTop id)

`proc` notation for Arrows

- `AnnKeywordId` : `AnnProc`, `AnnRarrow`

HsStatic (PostRn id NameSet) (LHsExpr id)

- `AnnKeywordId` : `AnnStatic`,

HsArrApp (LHsExpr id) (LHsExpr id) (PostTc id Type) HsArrAppType Bool

- `AnnKeywordId` : `Annlarrowtail`, `Annrarrowtail`,`AnnLarrowtail`, `AnnRarrowtail`

HsArrForm (LHsExpr id) (Maybe Fixity) [LHsCmdTop id]

- `AnnKeywordId` : `AnnOpenB` `'(|'`, `AnnCloseB` `'|)'`

HsTick (Tickish id) (LHsExpr id) |
HsBinTick Int Int (LHsExpr id) |

HsTickPragma SourceText (StringLiteral, (Int, Int), (Int, Int)) ((SourceText, SourceText), (SourceText, SourceText)) (LHsExpr id)

- `AnnKeywordId` : `AnnOpen`, `AnnOpen` `'{-# GENERATED'`, `AnnVal`,`AnnVal`, `AnnColon`,`AnnVal`, `AnnMinus`, `AnnVal`,`AnnColon`, `AnnVal`, `AnnClose` `'#-}'`

EWildPat |

EAsPat (Located id) (LHsExpr id)

- `AnnKeywordId` : `AnnAt`

EViewPat (LHsExpr id) (LHsExpr id)

- `AnnKeywordId` : `AnnRarrow`

ELazyPat (LHsExpr id)

- `AnnKeywordId` : `AnnTilde`

HsWrap HsWrapper (HsExpr id) |

Instances

DataId id => Data (HsExpr id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsExpr id -> c (HsExpr id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsExpr id) Source #

toConstr :: HsExpr id -> Constr Source #

dataTypeOf :: HsExpr id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (HsExpr id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsExpr id)) Source #

gmapT :: (forall b. Data b => b -> b) -> HsExpr id -> HsExpr id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsExpr id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsExpr id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> HsExpr id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsExpr id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsExpr id -> m (HsExpr id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsExpr id -> m (HsExpr id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsExpr id -> m (HsExpr id) Source #

OutputableBndrId id => Outputable (HsExpr id) # |
Methods ppr :: HsExpr id -> SDoc # pprPrec :: Rational -> HsExpr id -> SDoc #

type LHsTupArg id = Located (HsTupArg id) #

Located Haskell Tuple Argument

`HsTupArg` is used for tuple sections `(,a,)` is represented by `ExplicitTuple [Missing ty1, Present a, Missing ty3]` Which in turn stands for `(x:ty1 y:ty2. (x,a,y))`

data HsTupArg id #

- `AnnKeywordId` : `AnnComma`

Haskell Tuple Argument

Constructors

Present (LHsExpr id) | The argument
Missing (PostTc id Type) | The argument is missing, but this is its type

Instances

DataId id => Data (HsTupArg id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsTupArg id -> c (HsTupArg id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsTupArg id) Source #

toConstr :: HsTupArg id -> Constr Source #

dataTypeOf :: HsTupArg id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (HsTupArg id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsTupArg id)) Source #

gmapT :: (forall b. Data b => b -> b) -> HsTupArg id -> HsTupArg id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsTupArg id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsTupArg id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> HsTupArg id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsTupArg id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsTupArg id -> m (HsTupArg id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsTupArg id -> m (HsTupArg id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsTupArg id -> m (HsTupArg id) Source #

tupArgPresent :: LHsTupArg id -> Bool #

pprLExpr :: OutputableBndrId id => LHsExpr id -> SDoc #

pprExpr :: OutputableBndrId id => HsExpr id -> SDoc #

isQuietHsExpr :: HsExpr id -> Bool #

pprBinds :: (OutputableBndrId idL, OutputableBndrId idR) => HsLocalBindsLR idL idR -> SDoc #

ppr_lexpr :: OutputableBndrId id => LHsExpr id -> SDoc #

ppr_expr :: forall id. OutputableBndrId id => HsExpr id -> SDoc #

data LHsWcTypeX #

Located Haskell Wildcard Type Expression

Constructors

OutputableBndrId id => LHsWcTypeX (LHsWcType id) |

ppr_apps :: OutputableBndrId id => HsExpr id -> [Either (LHsExpr id) LHsWcTypeX] -> SDoc #

pprExternalSrcLoc :: (StringLiteral, (Int, Int), (Int, Int)) -> SDoc #

pprDebugParendExpr :: OutputableBndrId id => LHsExpr id -> SDoc #

pprParendLExpr :: OutputableBndrId id => LHsExpr id -> SDoc #

pprParendExpr :: OutputableBndrId id => HsExpr id -> SDoc #

hsExprNeedsParens :: HsExpr id -> Bool #

isAtomicHsExpr :: HsExpr id -> Bool #

type LHsCmd id = Located (HsCmd id) #

Located Haskell Command (for arrow syntax)

data HsCmd id #

Haskell Command (e.g. a "statement" in an Arrow proc block)

Constructors

HsCmdArrApp (LHsExpr id) (LHsExpr id) (PostTc id Type) HsArrAppType Bool

- `AnnKeywordId` : `Annlarrowtail`, `Annrarrowtail`,`AnnLarrowtail`, `AnnRarrowtail`

HsCmdArrForm (LHsExpr id) LexicalFixity (Maybe Fixity) [LHsCmdTop id]

- `AnnKeywordId` : `AnnOpenB` `'(|'`, `AnnCloseB` `'|)'`

HsCmdApp (LHsCmd id) (LHsExpr id) |

HsCmdLam (MatchGroup id (LHsCmd id))

- `AnnKeywordId` : `AnnLam`, `AnnRarrow`,

HsCmdPar (LHsCmd id)

- `AnnKeywordId` : `AnnOpen` `'('`, `AnnClose` `')'`

HsCmdCase (LHsExpr id) (MatchGroup id (LHsCmd id))

- `AnnKeywordId` : `AnnCase`, `AnnOf`,`AnnOpen` `'{'`, `AnnClose` `'}'`

HsCmdIf (Maybe (SyntaxExpr id)) (LHsExpr id) (LHsCmd id) (LHsCmd id)

- `AnnKeywordId` : `AnnIf`, `AnnSemi`, `AnnThen`,`AnnSemi`, `AnnElse`,

HsCmdLet (LHsLocalBinds id) (LHsCmd id)

- `AnnKeywordId` : `AnnLet`, `AnnOpen` `'{'`, `AnnClose` `'}'`,`AnnIn`

HsCmdDo (Located [CmdLStmt id]) (PostTc id Type)

- `AnnKeywordId` : `AnnDo`, `AnnOpen`, `AnnSemi`, `AnnVbar`, `AnnClose`

HsCmdWrap HsWrapper (HsCmd id) |

Instances

DataId id => Data (HsCmd id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsCmd id -> c (HsCmd id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsCmd id) Source #

toConstr :: HsCmd id -> Constr Source #

dataTypeOf :: HsCmd id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (HsCmd id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsCmd id)) Source #

gmapT :: (forall b. Data b => b -> b) -> HsCmd id -> HsCmd id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsCmd id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsCmd id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> HsCmd id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsCmd id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsCmd id -> m (HsCmd id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsCmd id -> m (HsCmd id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsCmd id -> m (HsCmd id) Source #

OutputableBndrId id => Outputable (HsCmd id) # |
Methods ppr :: HsCmd id -> SDoc # pprPrec :: Rational -> HsCmd id -> SDoc #

data HsArrAppType #

Haskell Array Application Type

Constructors

HsHigherOrderApp |
HsFirstOrderApp |

Instances

Data HsArrAppType # |

Methods

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

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

toConstr :: HsArrAppType -> Constr Source #

dataTypeOf :: HsArrAppType -> DataType Source #

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

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

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

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

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

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

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

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

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

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

type LHsCmdTop id = Located (HsCmdTop id) #

Top-level command, introducing a new arrow. This may occur inside a proc (where the stack is empty) or as an argument of a command-forming operator.

Located Haskell Top-level Command

data HsCmdTop id #

Haskell Top-level Command

Constructors

HsCmdTop (LHsCmd id) (PostTc id Type) (PostTc id Type) (CmdSyntaxTable id) |

Instances

DataId id => Data (HsCmdTop id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsCmdTop id -> c (HsCmdTop id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsCmdTop id) Source #

toConstr :: HsCmdTop id -> Constr Source #

dataTypeOf :: HsCmdTop id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (HsCmdTop id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsCmdTop id)) Source #

gmapT :: (forall b. Data b => b -> b) -> HsCmdTop id -> HsCmdTop id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsCmdTop id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsCmdTop id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> HsCmdTop id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsCmdTop id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsCmdTop id -> m (HsCmdTop id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsCmdTop id -> m (HsCmdTop id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsCmdTop id -> m (HsCmdTop id) Source #

OutputableBndrId id => Outputable (HsCmdTop id) # |
Methods ppr :: HsCmdTop id -> SDoc # pprPrec :: Rational -> HsCmdTop id -> SDoc #

pprLCmd :: OutputableBndrId id => LHsCmd id -> SDoc #

pprCmd :: OutputableBndrId id => HsCmd id -> SDoc #

isQuietHsCmd :: HsCmd id -> Bool #

ppr_lcmd :: OutputableBndrId id => LHsCmd id -> SDoc #

ppr_cmd :: forall id. OutputableBndrId id => HsCmd id -> SDoc #

pprCmdArg :: OutputableBndrId id => HsCmdTop id -> SDoc #

type HsRecordBinds id = HsRecFields id (LHsExpr id) #

Haskell Record Bindings

data MatchGroup id body #

Constructors

MG |

Fields

- mg_alts :: Located [LMatch id body]
- mg_arg_tys :: [PostTc id Type]
- mg_res_ty :: PostTc id Type
- mg_origin :: Origin

Instances

(Data body, DataId id) => Data (MatchGroup id body) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> MatchGroup id body -> c (MatchGroup id body) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (MatchGroup id body) Source #

toConstr :: MatchGroup id body -> Constr Source #

dataTypeOf :: MatchGroup id body -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (MatchGroup id body)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (MatchGroup id body)) Source #

gmapT :: (forall b. Data b => b -> b) -> MatchGroup id body -> MatchGroup id body Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> MatchGroup id body -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> MatchGroup id body -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> MatchGroup id body -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> MatchGroup id body -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> MatchGroup id body -> m (MatchGroup id body) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> MatchGroup id body -> m (MatchGroup id body) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> MatchGroup id body -> m (MatchGroup id body) Source #

type LMatch id body = Located (Match id body) #

Located Match

May have `AnnKeywordId` : `AnnSemi` when in a list

data Match id body #

Constructors

Match |

Fields

- m_ctxt :: HsMatchContext (NameOrRdrName id)
- m_pats :: [LPat id]
- m_type :: Maybe (LHsType id)
- m_grhss :: GRHSs id body

Instances

(Data body, DataId id) => Data (Match id body) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Match id body -> c (Match id body) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Match id body) Source #

toConstr :: Match id body -> Constr Source #

dataTypeOf :: Match id body -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Match id body)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Match id body)) Source #

gmapT :: (forall b. Data b => b -> b) -> Match id body -> Match id body Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Match id body -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Match id body -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> Match id body -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Match id body -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Match id body -> m (Match id body) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Match id body -> m (Match id body) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Match id body -> m (Match id body) Source #

(OutputableBndrId idR, Outputable body) => Outputable (Match idR body) # |
Methods ppr :: Match idR body -> SDoc # pprPrec :: Rational -> Match idR body -> SDoc #

isInfixMatch :: Match id body -> Bool #

isEmptyMatchGroup :: MatchGroup id body -> Bool #

isSingletonMatchGroup :: [LMatch id body] -> Bool #

Is there only one RHS in this list of matches?

matchGroupArity :: MatchGroup id body -> Arity #

hsLMatchPats :: LMatch id body -> [LPat id] #

data GRHSs id body #

Guarded Right-Hand Sides

GRHSs are used both for pattern bindings and for Matches

- `AnnKeywordId` : `AnnVbar`, `AnnEqual`,`AnnWhere`, `AnnOpen`,`AnnClose` `AnnRarrow`,`AnnSemi`

Constructors

GRHSs |

Fields

- grhssGRHSs :: [LGRHS id body]

  Guarded RHSs

- grhssLocalBinds :: LHsLocalBinds id

  The where clause

Instances

(Data body, DataId id) => Data (GRHSs id body) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GRHSs id body -> c (GRHSs id body) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (GRHSs id body) Source #

toConstr :: GRHSs id body -> Constr Source #

dataTypeOf :: GRHSs id body -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (GRHSs id body)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (GRHSs id body)) Source #

gmapT :: (forall b. Data b => b -> b) -> GRHSs id body -> GRHSs id body Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GRHSs id body -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GRHSs id body -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> GRHSs id body -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> GRHSs id body -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> GRHSs id body -> m (GRHSs id body) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GRHSs id body -> m (GRHSs id body) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GRHSs id body -> m (GRHSs id body) Source #

type LGRHS id body = Located (GRHS id body) #

Located Guarded Right-Hand Side

data GRHS id body #

Guarded Right Hand Side.

Constructors

GRHS [GuardLStmt id] body |

Instances

(Data body, DataId id) => Data (GRHS id body) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> GRHS id body -> c (GRHS id body) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (GRHS id body) Source #

toConstr :: GRHS id body -> Constr Source #

dataTypeOf :: GRHS id body -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (GRHS id body)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (GRHS id body)) Source #

gmapT :: (forall b. Data b => b -> b) -> GRHS id body -> GRHS id body Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> GRHS id body -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> GRHS id body -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> GRHS id body -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> GRHS id body -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> GRHS id body -> m (GRHS id body) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> GRHS id body -> m (GRHS id body) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> GRHS id body -> m (GRHS id body) Source #

pprMatches :: (OutputableBndrId idR, Outputable body) => MatchGroup idR body -> SDoc #

pprFunBind :: (OutputableBndrId idR, Outputable body) => MatchGroup idR body -> SDoc #

pprPatBind :: forall bndr id body. (OutputableBndrId bndr, OutputableBndrId id, Outputable body) => LPat bndr -> GRHSs id body -> SDoc #

pprMatch :: (OutputableBndrId idR, Outputable body) => Match idR body -> SDoc #

pprGRHSs :: (OutputableBndrId idR, Outputable body) => HsMatchContext idL -> GRHSs idR body -> SDoc #

pprGRHS :: (OutputableBndrId idR, Outputable body) => HsMatchContext idL -> GRHS idR body -> SDoc #

pp_rhs :: Outputable body => HsMatchContext idL -> body -> SDoc #

type LStmt id body = Located (StmtLR id id body) #

Located `do` block Statement

type LStmtLR idL idR body = Located (StmtLR idL idR body) #

Located Statement with separate Left and Right id's

type Stmt id body = StmtLR id id body #

`do` block Statement

type CmdLStmt id = LStmt id (LHsCmd id) #

Command Located Statement

type CmdStmt id = Stmt id (LHsCmd id) #

Command Statement

type ExprLStmt id = LStmt id (LHsExpr id) #

Expression Located Statement

type ExprStmt id = Stmt id (LHsExpr id) #

Expression Statement

type GuardLStmt id = LStmt id (LHsExpr id) #

Guard Located Statement

type GuardStmt id = Stmt id (LHsExpr id) #

Guard Statement

type GhciLStmt id = LStmt id (LHsExpr id) #

Ghci Located Statemnt

type GhciStmt id = Stmt id (LHsExpr id) #

Ghci Statement

data StmtLR idL idR body #

API Annotations when in qualifier lists or guards - `AnnKeywordId` : `AnnVbar`, `AnnComma`,`AnnThen`, `AnnBy`,`AnnBy`, `AnnGroup`,`AnnUsing`

Constructors

LastStmt body Bool (SyntaxExpr idR) |
BindStmt (LPat idL) body (SyntaxExpr idR) (SyntaxExpr idR) (PostTc idR Type) |
ApplicativeStmt [(SyntaxExpr idR, ApplicativeArg idL idR)] (Maybe (SyntaxExpr idR)) (PostTc idR Type) | `ApplicativeStmt` represents an applicative expression built with $ and *. It is generated by the renamer, and is desugared into the appropriate applicative expression by the desugarer, but it is intended to be invisible in error messages. For full details, see Note [ApplicativeDo] in RnExpr
BodyStmt body (SyntaxExpr idR) (SyntaxExpr idR) (PostTc idR Type) |

LetStmt (LHsLocalBindsLR idL idR)

- `AnnKeywordId` : `AnnLet` `AnnOpen` `'{'`,`AnnClose` `'}'`,

ParStmt [ParStmtBlock idL idR] (HsExpr idR) (SyntaxExpr idR) (PostTc idR Type) |
TransStmt |

Fields

- trS_form :: TransForm
- trS_stmts :: [ExprLStmt idL]
- trS_bndrs :: [(idR, idR)]
- trS_using :: LHsExpr idR
- trS_by :: Maybe (LHsExpr idR)
- trS_ret :: SyntaxExpr idR
- trS_bind :: SyntaxExpr idR
- trS_bind_arg_ty :: PostTc idR Type
- trS_fmap :: HsExpr idR

RecStmt

- `AnnKeywordId` : `AnnRec`

Fields

- recS_stmts :: [LStmtLR idL idR body]
- recS_later_ids :: [idR]
- recS_rec_ids :: [idR]
- recS_bind_fn :: SyntaxExpr idR
- recS_ret_fn :: SyntaxExpr idR
- recS_mfix_fn :: SyntaxExpr idR
- recS_bind_ty :: PostTc idR Type
- recS_later_rets :: [PostTcExpr]
- recS_rec_rets :: [PostTcExpr]
- recS_ret_ty :: PostTc idR Type

Instances

(Data body, DataId idL, DataId idR) => Data (StmtLR idL idR body) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> StmtLR idL idR body -> c (StmtLR idL idR body) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (StmtLR idL idR body) Source #

toConstr :: StmtLR idL idR body -> Constr Source #

dataTypeOf :: StmtLR idL idR body -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (StmtLR idL idR body)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (StmtLR idL idR body)) Source #

gmapT :: (forall b. Data b => b -> b) -> StmtLR idL idR body -> StmtLR idL idR body Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> StmtLR idL idR body -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> StmtLR idL idR body -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> StmtLR idL idR body -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> StmtLR idL idR body -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> StmtLR idL idR body -> m (StmtLR idL idR body) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> StmtLR idL idR body -> m (StmtLR idL idR body) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> StmtLR idL idR body -> m (StmtLR idL idR body) Source #

(OutputableBndrId idL, OutputableBndrId idR, Outputable body) => Outputable (StmtLR idL idR body) # |
Methods ppr :: StmtLR idL idR body -> SDoc # pprPrec :: Rational -> StmtLR idL idR body -> SDoc #

data TransForm #

Constructors

ThenForm |
GroupForm |

Instances

Data TransForm # |

Methods

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

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

toConstr :: TransForm -> Constr Source #

dataTypeOf :: TransForm -> DataType Source #

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

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

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

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

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

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

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

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

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

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

data ParStmtBlock idL idR #

Parenthesised Statement Block

Constructors

ParStmtBlock [ExprLStmt idL] [idR] (SyntaxExpr idR) |

Instances

(DataId idL, DataId idR) => Data (ParStmtBlock idL idR) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ParStmtBlock idL idR -> c (ParStmtBlock idL idR) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ParStmtBlock idL idR) Source #

toConstr :: ParStmtBlock idL idR -> Constr Source #

dataTypeOf :: ParStmtBlock idL idR -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (ParStmtBlock idL idR)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ParStmtBlock idL idR)) Source #

gmapT :: (forall b. Data b => b -> b) -> ParStmtBlock idL idR -> ParStmtBlock idL idR Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ParStmtBlock idL idR -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ParStmtBlock idL idR -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> ParStmtBlock idL idR -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ParStmtBlock idL idR -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ParStmtBlock idL idR -> m (ParStmtBlock idL idR) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ParStmtBlock idL idR -> m (ParStmtBlock idL idR) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ParStmtBlock idL idR -> m (ParStmtBlock idL idR) Source #

OutputableBndrId idL => Outputable (ParStmtBlock idL idR) # |
Methods ppr :: ParStmtBlock idL idR -> SDoc # pprPrec :: Rational -> ParStmtBlock idL idR -> SDoc #

data ApplicativeArg idL idR #

Applicative Argument

Constructors

ApplicativeArgOne (LPat idL) (LHsExpr idL) |
ApplicativeArgMany [ExprLStmt idL] (HsExpr idL) (LPat idL) |

Instances

(DataId idL, DataId idR) => Data (ApplicativeArg idL idR) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ApplicativeArg idL idR -> c (ApplicativeArg idL idR) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ApplicativeArg idL idR) Source #

toConstr :: ApplicativeArg idL idR -> Constr Source #

dataTypeOf :: ApplicativeArg idL idR -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (ApplicativeArg idL idR)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ApplicativeArg idL idR)) Source #

gmapT :: (forall b. Data b => b -> b) -> ApplicativeArg idL idR -> ApplicativeArg idL idR Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ApplicativeArg idL idR -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ApplicativeArg idL idR -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> ApplicativeArg idL idR -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ApplicativeArg idL idR -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ApplicativeArg idL idR -> m (ApplicativeArg idL idR) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ApplicativeArg idL idR -> m (ApplicativeArg idL idR) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ApplicativeArg idL idR -> m (ApplicativeArg idL idR) Source #

pprStmt :: forall idL idR body. (OutputableBndrId idL, OutputableBndrId idR, Outputable body) => StmtLR idL idR body -> SDoc #

pprTransformStmt :: OutputableBndrId id => [id] -> LHsExpr id -> Maybe (LHsExpr id) -> SDoc #

pprTransStmt :: Outputable body => Maybe body -> body -> TransForm -> SDoc #

pprBy :: Outputable body => Maybe body -> SDoc #

pprDo :: (OutputableBndrId id, Outputable body) => HsStmtContext any -> [LStmt id body] -> SDoc #

ppr_do_stmts :: (OutputableBndrId idL, OutputableBndrId idR, Outputable body) => [LStmtLR idL idR body] -> SDoc #

pprComp :: (OutputableBndrId id, Outputable body) => [LStmt id body] -> SDoc #

pprQuals :: (OutputableBndrId id, Outputable body) => [LStmt id body] -> SDoc #

data HsSplice id #

Haskell Splice

Constructors

HsTypedSplice SpliceDecoration id (LHsExpr id) |
HsUntypedSplice SpliceDecoration id (LHsExpr id) |
HsQuasiQuote id id SrcSpan FastString |
HsSpliced ThModFinalizers (HsSplicedThing id) |

Instances

DataId id => Data (HsSplice id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsSplice id -> c (HsSplice id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsSplice id) Source #

toConstr :: HsSplice id -> Constr Source #

dataTypeOf :: HsSplice id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (HsSplice id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsSplice id)) Source #

gmapT :: (forall b. Data b => b -> b) -> HsSplice id -> HsSplice id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsSplice id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsSplice id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> HsSplice id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsSplice id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsSplice id -> m (HsSplice id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsSplice id -> m (HsSplice id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsSplice id -> m (HsSplice id) Source #

OutputableBndrId id => Outputable (HsSplice id) # |
Methods ppr :: HsSplice id -> SDoc # pprPrec :: Rational -> HsSplice id -> SDoc #

data SpliceDecoration #

A splice can appear with various decorations wrapped around it. This data type captures explicitly how it was originally written, for use in the pretty printer.

Constructors

HasParens | $( splice ) or $$( splice )
HasDollar | $splice or $$splice
NoParens | bare splice

Instances

Eq SpliceDecoration # |
Methods (==) :: SpliceDecoration -> SpliceDecoration -> Bool # (/=) :: SpliceDecoration -> SpliceDecoration -> Bool #
Data SpliceDecoration # |

Methods

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

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

toConstr :: SpliceDecoration -> Constr Source #

dataTypeOf :: SpliceDecoration -> DataType Source #

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

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

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

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

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

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

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

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

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

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

Show SpliceDecoration # |
Methods showsPrec :: Int -> SpliceDecoration -> ShowS Source # show :: SpliceDecoration -> String Source # showList :: [SpliceDecoration] -> ShowS Source #
Outputable SpliceDecoration # |
Methods ppr :: SpliceDecoration -> SDoc # pprPrec :: Rational -> SpliceDecoration -> SDoc #

isTypedSplice :: HsSplice id -> Bool #

newtype ThModFinalizers #

Finalizers produced by a splice with `addModFinalizer`

See Note [Delaying modFinalizers in untyped splices] in RnSplice. For how this is used.

Constructors

ThModFinalizers [ForeignRef (Q ())] |

Instances

Data ThModFinalizers # |

Methods

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

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

toConstr :: ThModFinalizers -> Constr Source #

dataTypeOf :: ThModFinalizers -> DataType Source #

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

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

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

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

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

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

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

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

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

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

data HsSplicedThing id #

Haskell Spliced Thing

Values that can result from running a splice.

Constructors

HsSplicedExpr (HsExpr id) | Haskell Spliced Expression
HsSplicedTy (HsType id) | Haskell Spliced Type
HsSplicedPat (Pat id) | Haskell Spliced Pattern

Instances

DataId id => Data (HsSplicedThing id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsSplicedThing id -> c (HsSplicedThing id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsSplicedThing id) Source #

toConstr :: HsSplicedThing id -> Constr Source #

dataTypeOf :: HsSplicedThing id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (HsSplicedThing id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsSplicedThing id)) Source #

gmapT :: (forall b. Data b => b -> b) -> HsSplicedThing id -> HsSplicedThing id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsSplicedThing id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsSplicedThing id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> HsSplicedThing id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsSplicedThing id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsSplicedThing id -> m (HsSplicedThing id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsSplicedThing id -> m (HsSplicedThing id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsSplicedThing id -> m (HsSplicedThing id) Source #

OutputableBndrId id => Outputable (HsSplicedThing id) # |
Methods ppr :: HsSplicedThing id -> SDoc # pprPrec :: Rational -> HsSplicedThing id -> SDoc #

type SplicePointName = Name #

data PendingRnSplice #

Pending Renamer Splice

Constructors

PendingRnSplice UntypedSpliceFlavour SplicePointName (LHsExpr Name) |

Instances

Data PendingRnSplice # |

Methods

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

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

toConstr :: PendingRnSplice -> Constr Source #

dataTypeOf :: PendingRnSplice -> DataType Source #

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

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

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

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

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

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

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

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

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

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

Outputable PendingRnSplice # |
Methods ppr :: PendingRnSplice -> SDoc # pprPrec :: Rational -> PendingRnSplice -> SDoc #

data UntypedSpliceFlavour #

Constructors

UntypedExpSplice |
UntypedPatSplice |
UntypedTypeSplice |
UntypedDeclSplice |

Instances

Data UntypedSpliceFlavour # |

Methods

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

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

toConstr :: UntypedSpliceFlavour -> Constr Source #

dataTypeOf :: UntypedSpliceFlavour -> DataType Source #

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

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

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

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

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

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

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

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

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

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

data PendingTcSplice #

Pending Type-checker Splice

Constructors

PendingTcSplice SplicePointName (LHsExpr Id) |

Instances

Data PendingTcSplice # |

Methods

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

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

toConstr :: PendingTcSplice -> Constr Source #

dataTypeOf :: PendingTcSplice -> DataType Source #

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

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

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

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

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

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

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

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

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

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

Outputable PendingTcSplice # |
Methods ppr :: PendingTcSplice -> SDoc # pprPrec :: Rational -> PendingTcSplice -> SDoc #

pprPendingSplice :: OutputableBndrId id => SplicePointName -> LHsExpr id -> SDoc #

pprSpliceDecl :: OutputableBndrId id => HsSplice id -> SpliceExplicitFlag -> SDoc #

ppr_splice_decl :: OutputableBndrId id => HsSplice id -> SDoc #

pprSplice :: OutputableBndrId id => HsSplice id -> SDoc #

ppr_quasi :: OutputableBndr id => id -> id -> FastString -> SDoc #

ppr_splice :: OutputableBndrId id => SDoc -> id -> LHsExpr id -> SDoc -> SDoc #

data HsBracket id #

Haskell Bracket

Constructors

ExpBr (LHsExpr id) |
PatBr (LPat id) |
DecBrL [LHsDecl id] |
DecBrG (HsGroup id) |
TypBr (LHsType id) |
VarBr Bool id |
TExpBr (LHsExpr id) |

Instances

DataId id => Data (HsBracket id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsBracket id -> c (HsBracket id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsBracket id) Source #

toConstr :: HsBracket id -> Constr Source #

dataTypeOf :: HsBracket id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (HsBracket id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsBracket id)) Source #

gmapT :: (forall b. Data b => b -> b) -> HsBracket id -> HsBracket id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsBracket id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsBracket id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> HsBracket id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsBracket id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsBracket id -> m (HsBracket id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsBracket id -> m (HsBracket id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsBracket id -> m (HsBracket id) Source #

OutputableBndrId id => Outputable (HsBracket id) # |
Methods ppr :: HsBracket id -> SDoc # pprPrec :: Rational -> HsBracket id -> SDoc #

isTypedBracket :: HsBracket id -> Bool #

pprHsBracket :: OutputableBndrId id => HsBracket id -> SDoc #

thBrackets :: SDoc -> SDoc -> SDoc #

thTyBrackets :: SDoc -> SDoc #

data ArithSeqInfo id #

Arithmetic Sequence Information

Constructors

From (LHsExpr id) |
FromThen (LHsExpr id) (LHsExpr id) |
FromTo (LHsExpr id) (LHsExpr id) |
FromThenTo (LHsExpr id) (LHsExpr id) (LHsExpr id) |

Instances

DataId id => Data (ArithSeqInfo id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ArithSeqInfo id -> c (ArithSeqInfo id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ArithSeqInfo id) Source #

toConstr :: ArithSeqInfo id -> Constr Source #

dataTypeOf :: ArithSeqInfo id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (ArithSeqInfo id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ArithSeqInfo id)) Source #

gmapT :: (forall b. Data b => b -> b) -> ArithSeqInfo id -> ArithSeqInfo id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ArithSeqInfo id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ArithSeqInfo id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> ArithSeqInfo id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> ArithSeqInfo id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> ArithSeqInfo id -> m (ArithSeqInfo id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ArithSeqInfo id -> m (ArithSeqInfo id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ArithSeqInfo id -> m (ArithSeqInfo id) Source #

OutputableBndrId id => Outputable (ArithSeqInfo id) # |
Methods ppr :: ArithSeqInfo id -> SDoc # pprPrec :: Rational -> ArithSeqInfo id -> SDoc #

pp_dotdot :: SDoc #

data HsMatchContext id #

Haskell Match Context

Context of a pattern match. This is more subtle than it would seem. See Note [Varieties of pattern matches].

Constructors

FunRhs | A pattern matching on an argument of a function binding

Fields

- mc_fun :: Located id

  function binder of `f`

- mc_fixity :: LexicalFixity

  fixing of `f`

- mc_strictness :: SrcStrictness

  was the pattern banged? See Note [Varieties of binding pattern matches]

LambdaExpr | Patterns of a lambda
CaseAlt | Patterns and guards on a case alternative
IfAlt | Guards of a multi-way if alternative
ProcExpr | Patterns of a proc
PatBindRhs | A pattern binding eg [y] <- e = e
RecUpd | Record update [used only in DsExpr to tell matchWrapper what sort of runtime error message to generate]
StmtCtxt (HsStmtContext id) | Pattern of a do-stmt, list comprehension, pattern guard, etc
ThPatSplice | A Template Haskell pattern splice
ThPatQuote | A Template Haskell pattern quotation [p| (a,b) |]
PatSyn | A pattern synonym declaration

Instances

Functor HsMatchContext # |
Methods fmap :: (a -> b) -> HsMatchContext a -> HsMatchContext b Source # (<$) :: a -> HsMatchContext b -> HsMatchContext a Source #
DataIdPost id => Data (HsMatchContext id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsMatchContext id -> c (HsMatchContext id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsMatchContext id) Source #

toConstr :: HsMatchContext id -> Constr Source #

dataTypeOf :: HsMatchContext id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (HsMatchContext id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsMatchContext id)) Source #

gmapT :: (forall b. Data b => b -> b) -> HsMatchContext id -> HsMatchContext id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsMatchContext id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsMatchContext id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> HsMatchContext id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsMatchContext id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsMatchContext id -> m (HsMatchContext id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsMatchContext id -> m (HsMatchContext id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsMatchContext id -> m (HsMatchContext id) Source #

OutputableBndr id => Outputable (HsMatchContext id) # |
Methods ppr :: HsMatchContext id -> SDoc # pprPrec :: Rational -> HsMatchContext id -> SDoc #

isPatSynCtxt :: HsMatchContext id -> Bool #

data HsStmtContext id #

Haskell Statement Context

Constructors

ListComp |
MonadComp |
PArrComp | Parallel array comprehension
DoExpr | do { ... }
MDoExpr | mdo { ... } ie recursive do-expression
ArrowExpr | do-notation in an arrow-command context
GhciStmtCtxt | A command-line Stmt in GHCi pat <- rhs
PatGuard (HsMatchContext id) | Pattern guard for specified thing
ParStmtCtxt (HsStmtContext id) | A branch of a parallel stmt
TransStmtCtxt (HsStmtContext id) | A branch of a transform stmt

Instances

Functor HsStmtContext # |
Methods fmap :: (a -> b) -> HsStmtContext a -> HsStmtContext b Source # (<$) :: a -> HsStmtContext b -> HsStmtContext a Source #
DataIdPost id => Data (HsStmtContext id) # |

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> HsStmtContext id -> c (HsStmtContext id) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (HsStmtContext id) Source #

toConstr :: HsStmtContext id -> Constr Source #

dataTypeOf :: HsStmtContext id -> DataType Source #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (HsStmtContext id)) Source #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (HsStmtContext id)) Source #

gmapT :: (forall b. Data b => b -> b) -> HsStmtContext id -> HsStmtContext id Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> HsStmtContext id -> r Source #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> HsStmtContext id -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> HsStmtContext id -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> HsStmtContext id -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> HsStmtContext id -> m (HsStmtContext id) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> HsStmtContext id -> m (HsStmtContext id) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> HsStmtContext id -> m (HsStmtContext id) Source #

(Outputable id, Outputable (NameOrRdrName id)) => Outputable (HsStmtContext id) # |
Methods ppr :: HsStmtContext id -> SDoc # pprPrec :: Rational -> HsStmtContext id -> SDoc #

isListCompExpr :: HsStmtContext id -> Bool #

isMonadCompExpr :: HsStmtContext id -> Bool #

isMonadFailStmtContext :: HsStmtContext id -> Bool #

Should pattern match failure in a `HsStmtContext` be desugared using `MonadFail`?

matchSeparator :: HsMatchContext id -> SDoc #

pprMatchContext :: (Outputable (NameOrRdrName id), Outputable id) => HsMatchContext id -> SDoc #

pprMatchContextNoun :: (Outputable (NameOrRdrName id), Outputable id) => HsMatchContext id -> SDoc #

pprAStmtContext :: (Outputable id, Outputable (NameOrRdrName id)) => HsStmtContext id -> SDoc #

pprStmtContext :: (Outputable id, Outputable (NameOrRdrName id)) => HsStmtContext id -> SDoc #

matchContextErrString :: Outputable id => HsMatchContext id -> SDoc #

pprMatchInCtxt :: (OutputableBndrId idR, Outputable (NameOrRdrName (NameOrRdrName idR)), Outputable body) => Match idR body -> SDoc #

pprStmtInCtxt :: (OutputableBndrId idL, OutputableBndrId idR, Outputable body) => HsStmtContext idL -> StmtLR idL idR body -> SDoc #