Safe Haskell | None |
---|---|
Language | Haskell2010 |
Abstract Haskell syntax for expressions.
- 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
- unboundVarOcc :: UnboundVar -> OccName
- data HsExpr id
- = HsVar (Located id)
- | HsUnboundVar UnboundVar
- | HsRecFld (AmbiguousFieldOcc id)
- | HsOverLabel FastString
- | HsIPVar HsIPName
- | HsOverLit (HsOverLit id)
- | HsLit HsLit
- | HsLam (MatchGroup id (LHsExpr id))
- | HsLamCase (PostTc id Type) (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
- | 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 (Located (HsLocalBinds 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 { }
- | 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 (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
- tupArgPresent :: LHsTupArg id -> Bool
- pprLExpr :: OutputableBndr id => LHsExpr id -> SDoc
- pprExpr :: OutputableBndr id => HsExpr id -> SDoc
- isQuietHsExpr :: HsExpr id -> Bool
- pprBinds :: (OutputableBndr idL, OutputableBndr idR) => HsLocalBindsLR idL idR -> SDoc
- ppr_lexpr :: OutputableBndr id => LHsExpr id -> SDoc
- ppr_expr :: forall id. OutputableBndr id => HsExpr id -> SDoc
- data LHsWcTypeX = OutputableBndr id => LHsWcTypeX (LHsWcType id)
- ppr_apps :: OutputableBndr id => HsExpr id -> [Either (LHsExpr id) LHsWcTypeX] -> SDoc
- pprExternalSrcLoc :: (StringLiteral, (Int, Int), (Int, Int)) -> SDoc
- pprDebugParendExpr :: OutputableBndr id => LHsExpr id -> SDoc
- pprParendLExpr :: OutputableBndr id => LHsExpr id -> SDoc
- pprParendExpr :: OutputableBndr 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) (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 (Located (HsLocalBinds id)) (LHsCmd id)
- | HsCmdDo (Located [CmdLStmt id]) (PostTc id Type)
- | HsCmdWrap HsWrapper (HsCmd id)
- data HsArrAppType
- type LHsCmdTop id = Located (HsCmdTop id)
- data HsCmdTop id = HsCmdTop (LHsCmd id) (PostTc id Type) (PostTc id Type) (CmdSyntaxTable id)
- pprLCmd :: OutputableBndr id => LHsCmd id -> SDoc
- pprCmd :: OutputableBndr id => HsCmd id -> SDoc
- isQuietHsCmd :: HsCmd id -> Bool
- ppr_lcmd :: OutputableBndr id => LHsCmd id -> SDoc
- ppr_cmd :: forall id. OutputableBndr id => HsCmd id -> SDoc
- pprCmdArg :: OutputableBndr id => HsCmdTop id -> SDoc
- type HsRecordBinds id = HsRecFields id (LHsExpr id)
- data MatchGroup id body = MG {}
- type LMatch id body = Located (Match id body)
- data Match id body = Match {}
- data MatchFixity id
- = NonFunBindMatch
- | FunBindMatch (Located id) Bool
- isInfixMatch :: Match id body -> Bool
- isEmptyMatchGroup :: MatchGroup id body -> Bool
- isSingletonMatchGroup :: MatchGroup id body -> Bool
- matchGroupArity :: MatchGroup id body -> Arity
- hsLMatchPats :: LMatch id body -> [LPat id]
- data GRHSs id body = GRHSs {
- grhssGRHSs :: [LGRHS id body]
- grhssLocalBinds :: Located (HsLocalBinds id)
- type LGRHS id body = Located (GRHS id body)
- data GRHS id body = GRHS [GuardLStmt id] body
- pprMatches :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> MatchGroup idR body -> SDoc
- pprFunBind :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => idL -> MatchGroup idR body -> SDoc
- pprPatBind :: forall bndr id body. (OutputableBndr bndr, OutputableBndr id, Outputable body) => LPat bndr -> GRHSs id body -> SDoc
- pprMatch :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> Match idR body -> SDoc
- pprGRHSs :: (OutputableBndr idR, Outputable body) => HsMatchContext idL -> GRHSs idR body -> SDoc
- pprGRHS :: (OutputableBndr 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 (Located (HsLocalBindsLR idL idR))
- | ParStmt [ParStmtBlock idL idR] (HsExpr idR) (SyntaxExpr idR) (PostTc idR Type)
- | TransStmt { }
- | 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
- 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. (OutputableBndr idL, OutputableBndr idR, Outputable body) => StmtLR idL idR body -> SDoc
- pprTransformStmt :: OutputableBndr id => [id] -> LHsExpr id -> Maybe (LHsExpr id) -> SDoc
- pprTransStmt :: Outputable body => Maybe body -> body -> TransForm -> SDoc
- pprBy :: Outputable body => Maybe body -> SDoc
- pprDo :: (OutputableBndr id, Outputable body) => HsStmtContext any -> [LStmt id body] -> SDoc
- ppr_do_stmts :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => [LStmtLR idL idR body] -> SDoc
- pprComp :: (OutputableBndr id, Outputable body) => [LStmt id body] -> SDoc
- pprQuals :: (OutputableBndr id, Outputable body) => [LStmt id body] -> SDoc
- data HsSplice id
- = HsTypedSplice id (LHsExpr id)
- | HsUntypedSplice id (LHsExpr id)
- | HsQuasiQuote id id SrcSpan FastString
- | HsSpliced ThModFinalizers (HsSplicedThing id)
- 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
- data PendingTcSplice = PendingTcSplice SplicePointName (LHsExpr Id)
- pprPendingSplice :: OutputableBndr id => SplicePointName -> LHsExpr id -> SDoc
- pprSplice :: OutputableBndr id => HsSplice id -> SDoc
- ppr_quasi :: OutputableBndr id => id -> id -> FastString -> SDoc
- ppr_splice :: OutputableBndr id => SDoc -> id -> LHsExpr id -> SDoc
- data HsBracket id
- isTypedBracket :: HsBracket id -> Bool
- pprHsBracket :: OutputableBndr id => HsBracket id -> SDoc
- thBrackets :: SDoc -> SDoc -> SDoc
- thTyBrackets :: SDoc -> SDoc
- data ArithSeqInfo id
- pp_dotdot :: SDoc
- data HsMatchContext id
- = FunRhs id
- | 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
- matchSeparator :: HsMatchContext id -> SDoc
- pprMatchContext :: Outputable id => HsMatchContext id -> SDoc
- pprMatchContextNoun :: Outputable id => HsMatchContext id -> SDoc
- pprAStmtContext :: Outputable id => HsStmtContext id -> SDoc
- pprStmtContext :: Outputable id => HsStmtContext id -> SDoc
- matchContextErrString :: Outputable id => HsMatchContext id -> SDoc
- pprMatchInCtxt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> Match idR body -> SDoc
- pprStmtInCtxt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsStmtContext idL -> StmtLR idL idR body -> SDoc
Expressions proper
type PostTcExpr = HsExpr Id Source #
PostTcExpr is an evidence expression attached to the syntax tree by the type checker (c.f. postTcType).
type PostTcTable = [(Name, PostTcExpr)] Source #
We use a PostTcTable where there are a bunch of pieces of evidence, more than is convenient to keep individually.
data SyntaxExpr id Source #
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.)
SyntaxExpr | |
|
DataId id => Data (SyntaxExpr id) # | |
OutputableBndr id => Outputable (SyntaxExpr id) # | |
This is used for rebindable-syntax pieces that are too polymorphic for tcSyntaxOp (trS_fmap and the mzip in ParStmt)
noSyntaxExpr :: SyntaxExpr id Source #
mkRnSyntaxExpr :: Name -> SyntaxExpr Name Source #
Make a 'SyntaxExpr Name' (the "rn" is because this is used in the renamer), missing its HsWrappers.
type CmdSyntaxTable id = [(Name, HsExpr id)] Source #
data UnboundVar Source #
An unbound variable; used for treating out-of-scope variables as expression holes
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) |
unboundVarOcc :: UnboundVar -> OccName Source #
A Haskell expression.
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. |
HsRecFld (AmbiguousFieldOcc id) | Variable pointing to record selector |
HsOverLabel FastString | Overloaded label (See Note [Overloaded labels] in GHC.OverloadedLabels) |
HsIPVar HsIPName | Implicit parameter |
HsOverLit (HsOverLit id) | Overloaded literals |
HsLit HsLit | Simple (non-overloaded) literals |
HsLam (MatchGroup id (LHsExpr id)) | Lambda abstraction. Currently always a single match |
HsLamCase (PostTc id Type) (MatchGroup id (LHsExpr id)) | Lambda-case |
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 |
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 |
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 |
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)] | Multi-way if |
HsLet (Located (HsLocalBinds id)) (LHsExpr id) | let(rec)
|
HsDo (HsStmtContext Name) (Located [ExprLStmt id]) (PostTc id Type) | |
ExplicitList (PostTc id Type) (Maybe (SyntaxExpr id)) [LHsExpr id] | Syntactic list: [a,b,c,...]
|
ExplicitPArr (PostTc id Type) [LHsExpr id] | Syntactic parallel array: [:e1, ..., en:] |
RecordCon | Record construction
|
| |
RecordUpd | Record update
|
ExprWithTySig (LHsExpr id) (LHsSigWcType id) | Expression with an explicit type signature. |
ExprWithTySigOut (LHsExpr id) (LHsSigWcType Name) | |
ArithSeq PostTcExpr (Maybe (SyntaxExpr id)) (ArithSeqInfo id) | Arithmetic sequence
|
PArrSeq PostTcExpr (ArithSeqInfo id) | Arithmetic sequence for parallel array [:e1..e2:] or [:e1, e2..e3:] |
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 (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) |
DataId id => Data (HsExpr id) # | |
OutputableBndr id => Outputable (HsExpr id) # | |
type LHsTupArg id = Located (HsTupArg id) Source #
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))
tupArgPresent :: LHsTupArg id -> Bool Source #
isQuietHsExpr :: HsExpr id -> Bool Source #
pprBinds :: (OutputableBndr idL, OutputableBndr idR) => HsLocalBindsLR idL idR -> SDoc Source #
data LHsWcTypeX Source #
OutputableBndr id => LHsWcTypeX (LHsWcType id) |
ppr_apps :: OutputableBndr id => HsExpr id -> [Either (LHsExpr id) LHsWcTypeX] -> SDoc Source #
pprExternalSrcLoc :: (StringLiteral, (Int, Int), (Int, Int)) -> SDoc Source #
pprDebugParendExpr :: OutputableBndr id => LHsExpr id -> SDoc Source #
pprParendLExpr :: OutputableBndr id => LHsExpr id -> SDoc Source #
pprParendExpr :: OutputableBndr id => HsExpr id -> SDoc Source #
hsExprNeedsParens :: HsExpr id -> Bool Source #
isAtomicHsExpr :: HsExpr id -> Bool Source #
HsCmdArrApp (LHsExpr id) (LHsExpr id) (PostTc id Type) HsArrAppType Bool | |
HsCmdArrForm (LHsExpr id) (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 (Located (HsLocalBinds id)) (LHsCmd id) |
|
HsCmdDo (Located [CmdLStmt id]) (PostTc id Type) | |
HsCmdWrap HsWrapper (HsCmd id) |
DataId id => Data (HsCmd id) # | |
OutputableBndr id => Outputable (HsCmd id) # | |
type LHsCmdTop id = Located (HsCmdTop id) Source #
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.
DataId id => Data (HsCmdTop id) # | |
OutputableBndr id => Outputable (HsCmdTop id) # | |
isQuietHsCmd :: HsCmd id -> Bool Source #
type HsRecordBinds id = HsRecFields id (LHsExpr id) Source #
type LMatch id body = Located (Match id body) Source #
May have AnnKeywordId
: AnnSemi
when in a
list
data MatchFixity id Source #
When a Match is part of a FunBind, it captures one complete equation for the function. As such it has the function name, and its fixity.
DataId id => Data (MatchFixity id) # | |
isInfixMatch :: Match id body -> Bool Source #
isEmptyMatchGroup :: MatchGroup id body -> Bool Source #
isSingletonMatchGroup :: MatchGroup id body -> Bool Source #
Is there only one RHS in this group?
matchGroupArity :: MatchGroup id body -> Arity Source #
hsLMatchPats :: LMatch id body -> [LPat id] Source #
GRHSs are used both for pattern bindings and for Matches
GRHSs | |
|
Guarded Right Hand Side.
GRHS [GuardLStmt id] body |
pprMatches :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> MatchGroup idR body -> SDoc Source #
pprFunBind :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => idL -> MatchGroup idR body -> SDoc Source #
pprPatBind :: forall bndr id body. (OutputableBndr bndr, OutputableBndr id, Outputable body) => LPat bndr -> GRHSs id body -> SDoc Source #
pprMatch :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> Match idR body -> SDoc Source #
pprGRHSs :: (OutputableBndr idR, Outputable body) => HsMatchContext idL -> GRHSs idR body -> SDoc Source #
pprGRHS :: (OutputableBndr idR, Outputable body) => HsMatchContext idL -> GRHS idR body -> SDoc Source #
pp_rhs :: Outputable body => HsMatchContext idL -> body -> SDoc Source #
type GuardLStmt id = LStmt id (LHsExpr id) Source #
data StmtLR idL idR body Source #
API Annotations when in qualifier lists or guards
- AnnKeywordId
: AnnVbar
,
AnnComma
,AnnThen
,
AnnBy
,AnnBy
,
AnnGroup
,AnnUsing
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) |
For full details, see Note [ApplicativeDo] in RnExpr |
BodyStmt body (SyntaxExpr idR) (SyntaxExpr idR) (PostTc idR Type) | |
LetStmt (Located (HsLocalBindsLR idL idR)) |
|
ParStmt [ParStmtBlock idL idR] (HsExpr idR) (SyntaxExpr idR) (PostTc idR Type) | |
TransStmt | |
RecStmt | |
|
(Data body, DataId idL, DataId idR) => Data (StmtLR idL idR body) # | |
(OutputableBndr idL, OutputableBndr idR, Outputable body) => Outputable (StmtLR idL idR body) # | |
data ParStmtBlock idL idR Source #
ParStmtBlock [ExprLStmt idL] [idR] (SyntaxExpr idR) |
(DataId idL, DataId idR) => Data (ParStmtBlock idL idR) # | |
OutputableBndr idL => Outputable (ParStmtBlock idL idR) # | |
data ApplicativeArg idL idR Source #
ApplicativeArgOne (LPat idL) (LHsExpr idL) | |
ApplicativeArgMany [ExprLStmt idL] (HsExpr idL) (LPat idL) |
(DataId idL, DataId idR) => Data (ApplicativeArg idL idR) # | |
pprStmt :: forall idL idR body. (OutputableBndr idL, OutputableBndr idR, Outputable body) => StmtLR idL idR body -> SDoc Source #
pprTransformStmt :: OutputableBndr id => [id] -> LHsExpr id -> Maybe (LHsExpr id) -> SDoc Source #
pprTransStmt :: Outputable body => Maybe body -> body -> TransForm -> SDoc Source #
pprDo :: (OutputableBndr id, Outputable body) => HsStmtContext any -> [LStmt id body] -> SDoc Source #
ppr_do_stmts :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => [LStmtLR idL idR body] -> SDoc Source #
pprComp :: (OutputableBndr id, Outputable body) => [LStmt id body] -> SDoc Source #
pprQuals :: (OutputableBndr id, Outputable body) => [LStmt id body] -> SDoc Source #
HsTypedSplice id (LHsExpr id) | |
HsUntypedSplice id (LHsExpr id) | |
HsQuasiQuote id id SrcSpan FastString | |
HsSpliced ThModFinalizers (HsSplicedThing id) |
DataId id => Data (HsSplice id) # | |
OutputableBndr id => Outputable (HsSplice id) # | |
isTypedSplice :: HsSplice id -> Bool Source #
newtype ThModFinalizers Source #
Finalizers produced by a splice with
addModFinalizer
See Note [Delaying modFinalizers in untyped splices] in RnSplice. For how this is used.
ThModFinalizers [ForeignRef (Q ())] |
data HsSplicedThing id Source #
Values that can result from running a splice.
HsSplicedExpr (HsExpr id) | |
HsSplicedTy (HsType id) | |
HsSplicedPat (Pat id) |
DataId id => Data (HsSplicedThing id) # | |
OutputableBndr id => Outputable (HsSplicedThing id) # | |
type SplicePointName = Name Source #
data PendingRnSplice Source #
data UntypedSpliceFlavour Source #
data PendingTcSplice Source #
pprPendingSplice :: OutputableBndr id => SplicePointName -> LHsExpr id -> SDoc Source #
ppr_quasi :: OutputableBndr id => id -> id -> FastString -> SDoc Source #
ppr_splice :: OutputableBndr id => SDoc -> id -> LHsExpr id -> SDoc Source #
ExpBr (LHsExpr id) | |
PatBr (LPat id) | |
DecBrL [LHsDecl id] | |
DecBrG (HsGroup id) | |
TypBr (LHsType id) | |
VarBr Bool id | |
TExpBr (LHsExpr id) |
DataId id => Data (HsBracket id) # | |
OutputableBndr id => Outputable (HsBracket id) # | |
isTypedBracket :: HsBracket id -> Bool Source #
pprHsBracket :: OutputableBndr id => HsBracket id -> SDoc Source #
thTyBrackets :: SDoc -> SDoc Source #
data ArithSeqInfo id Source #
From (LHsExpr id) | |
FromThen (LHsExpr id) (LHsExpr id) | |
FromTo (LHsExpr id) (LHsExpr id) | |
FromThenTo (LHsExpr id) (LHsExpr id) (LHsExpr id) |
DataId id => Data (ArithSeqInfo id) # | |
OutputableBndr id => Outputable (ArithSeqInfo id) # | |
data HsMatchContext id Source #
FunRhs id | |
LambdaExpr | |
CaseAlt | |
IfAlt | |
ProcExpr | |
PatBindRhs | |
RecUpd | |
StmtCtxt (HsStmtContext id) | |
ThPatSplice | |
ThPatQuote | |
PatSyn |
Data id => Data (HsMatchContext id) # | |
isPatSynCtxt :: HsMatchContext id -> Bool Source #
data HsStmtContext id Source #
ListComp | |
MonadComp | |
PArrComp | |
DoExpr | |
MDoExpr | |
ArrowExpr | |
GhciStmtCtxt | |
PatGuard (HsMatchContext id) | |
ParStmtCtxt (HsStmtContext id) | |
TransStmtCtxt (HsStmtContext id) |
Data id => Data (HsStmtContext id) # | |
isListCompExpr :: HsStmtContext id -> Bool Source #
isMonadCompExpr :: HsStmtContext id -> Bool Source #
matchSeparator :: HsMatchContext id -> SDoc Source #
pprMatchContext :: Outputable id => HsMatchContext id -> SDoc Source #
pprMatchContextNoun :: Outputable id => HsMatchContext id -> SDoc Source #
pprAStmtContext :: Outputable id => HsStmtContext id -> SDoc Source #
pprStmtContext :: Outputable id => HsStmtContext id -> SDoc Source #
matchContextErrString :: Outputable id => HsMatchContext id -> SDoc Source #
pprMatchInCtxt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsMatchContext idL -> Match idR body -> SDoc Source #
pprStmtInCtxt :: (OutputableBndr idL, OutputableBndr idR, Outputable body) => HsStmtContext idL -> StmtLR idL idR body -> SDoc Source #