HsUtils

ghc-8.0.0.20160204: The GHC API

Safe Haskell | None
Language | Haskell2010

HsUtils

Contents

- Constructing general big tuples

Synopsis

- mkHsPar :: LHsExpr id -> LHsExpr id
- mkHsApp :: LHsExpr name -> LHsExpr name -> LHsExpr name
- mkHsConApp :: DataCon -> [Type] -> [HsExpr Id] -> LHsExpr Id
- mkSimpleHsAlt :: LPat id -> Located (body id) -> LMatch id (Located (body id))
- mkSimpleMatch :: [LPat id] -> Located (body id) -> LMatch id (Located (body id))
- unguardedGRHSs :: Located (body id) -> GRHSs id (Located (body id))
- unguardedRHS :: SrcSpan -> Located (body id) -> [LGRHS id (Located (body id))]
- mkMatchGroup :: Origin -> [LMatch RdrName (Located (body RdrName))] -> MatchGroup RdrName (Located (body RdrName))
- mkMatchGroupName :: Origin -> [LMatch Name (Located (body Name))] -> MatchGroup Name (Located (body Name))
- mkMatch :: [LPat id] -> LHsExpr id -> Located (HsLocalBinds id) -> LMatch id (LHsExpr id)
- mkHsLam :: [LPat RdrName] -> LHsExpr RdrName -> LHsExpr RdrName
- mkHsIf :: LHsExpr id -> LHsExpr id -> LHsExpr id -> HsExpr id
- mkHsWrap :: HsWrapper -> HsExpr id -> HsExpr id
- mkLHsWrap :: HsWrapper -> LHsExpr id -> LHsExpr id
- mkHsWrapCo :: TcCoercionN -> HsExpr id -> HsExpr id
- mkHsWrapCoR :: TcCoercionR -> HsExpr id -> HsExpr id
- mkLHsWrapCo :: TcCoercionN -> LHsExpr id -> LHsExpr id
- mkHsDictLet :: TcEvBinds -> LHsExpr Id -> LHsExpr Id
- mkHsLams :: [TyVar] -> [EvVar] -> LHsExpr Id -> LHsExpr Id
- mkHsOpApp :: LHsExpr id -> id -> LHsExpr id -> HsExpr id
- mkHsDo :: HsStmtContext Name -> [ExprLStmt RdrName] -> HsExpr RdrName
- mkHsComp :: HsStmtContext Name -> [ExprLStmt RdrName] -> LHsExpr RdrName -> HsExpr RdrName
- mkHsWrapPat :: HsWrapper -> Pat id -> Type -> Pat id
- mkHsWrapPatCo :: TcCoercionN -> Pat id -> Type -> Pat id
- mkLHsPar :: LHsExpr name -> LHsExpr name
- mkHsCmdWrap :: HsWrapper -> HsCmd id -> HsCmd id
- mkLHsCmdWrap :: HsWrapper -> LHsCmd id -> LHsCmd id
- isLHsTypeExpr_maybe :: LHsExpr name -> Maybe (LHsWcType name)
- isLHsTypeExpr :: LHsExpr name -> Bool
- nlHsTyApp :: name -> [Type] -> LHsExpr name
- nlHsTyApps :: name -> [Type] -> [LHsExpr name] -> LHsExpr name
- nlHsVar :: id -> LHsExpr id
- nlHsLit :: HsLit -> LHsExpr id
- nlHsApp :: LHsExpr id -> LHsExpr id -> LHsExpr id
- nlHsApps :: id -> [LHsExpr id] -> LHsExpr id
- nlHsSyntaxApps :: SyntaxExpr id -> [LHsExpr id] -> LHsExpr id
- nlHsIntLit :: Integer -> LHsExpr id
- nlHsVarApps :: id -> [id] -> LHsExpr id
- nlHsDo :: HsStmtContext Name -> [LStmt RdrName (LHsExpr RdrName)] -> LHsExpr RdrName
- nlHsOpApp :: LHsExpr id -> id -> LHsExpr id -> LHsExpr id
- nlHsLam :: LMatch RdrName (LHsExpr RdrName) -> LHsExpr RdrName
- nlHsPar :: LHsExpr id -> LHsExpr id
- nlHsIf :: LHsExpr id -> LHsExpr id -> LHsExpr id -> LHsExpr id
- nlHsCase :: LHsExpr RdrName -> [LMatch RdrName (LHsExpr RdrName)] -> LHsExpr RdrName
- nlList :: [LHsExpr RdrName] -> LHsExpr RdrName
- mkLHsTupleExpr :: [LHsExpr a] -> LHsExpr a
- mkLHsVarTuple :: [a] -> LHsExpr a
- missingTupArg :: HsTupArg RdrName
- toLHsSigWcType :: Type -> LHsSigWcType RdrName
- mkChunkified :: ([a] -> a) -> [a] -> a
- chunkify :: [a] -> [[a]]
- mkFunBind :: Located RdrName -> [LMatch RdrName (LHsExpr RdrName)] -> HsBind RdrName
- mkVarBind :: id -> LHsExpr id -> LHsBind id
- mkHsVarBind :: SrcSpan -> RdrName -> LHsExpr RdrName -> LHsBind RdrName
- mk_easy_FunBind :: SrcSpan -> RdrName -> [LPat RdrName] -> LHsExpr RdrName -> LHsBind RdrName
- mkTopFunBind :: Origin -> Located Name -> [LMatch Name (LHsExpr Name)] -> HsBind Name
- mkPatSynBind :: Located RdrName -> HsPatSynDetails (Located RdrName) -> LPat RdrName -> HsPatSynDir RdrName -> HsBind RdrName
- isInfixFunBind :: HsBindLR id1 id2 -> Bool
- mkHsIntegral :: String -> Integer -> PostTc RdrName Type -> HsOverLit RdrName
- mkHsFractional :: FractionalLit -> PostTc RdrName Type -> HsOverLit RdrName
- mkHsIsString :: String -> FastString -> PostTc RdrName Type -> HsOverLit RdrName
- mkHsString :: String -> HsLit
- mkHsStringPrimLit :: FastString -> HsLit
- mkNPat :: Located (HsOverLit RdrName) -> Maybe (SyntaxExpr RdrName) -> Pat RdrName
- mkNPlusKPat :: Located RdrName -> Located (HsOverLit RdrName) -> Pat RdrName
- nlVarPat :: id -> LPat id
- nlLitPat :: HsLit -> LPat id
- nlConVarPat :: RdrName -> [RdrName] -> LPat RdrName
- nlConVarPatName :: Name -> [Name] -> LPat Name
- nlConPat :: RdrName -> [LPat RdrName] -> LPat RdrName
- nlConPatName :: Name -> [LPat Name] -> LPat Name
- nlInfixConPat :: id -> LPat id -> LPat id -> LPat id
- nlNullaryConPat :: id -> LPat id
- nlWildConPat :: DataCon -> LPat RdrName
- nlWildPat :: LPat RdrName
- nlWildPatName :: LPat Name
- nlWildPatId :: LPat Id
- nlTuplePat :: [LPat id] -> Boxity -> LPat id
- mkParPat :: LPat name -> LPat name
- mkBigLHsVarTup :: [id] -> LHsExpr id
- mkBigLHsTup :: [LHsExpr id] -> LHsExpr id
- mkBigLHsVarPatTup :: [id] -> LPat id
- mkBigLHsPatTup :: [LPat id] -> LPat id
- mkHsAppTy :: LHsType name -> LHsType name -> LHsType name
- mkHsAppTys :: LHsType name -> [LHsType name] -> LHsType name
- userHsTyVarBndrs :: SrcSpan -> [name] -> [LHsTyVarBndr name]
- userHsLTyVarBndrs :: SrcSpan -> [Located name] -> [LHsTyVarBndr name]
- mkLHsSigType :: LHsType RdrName -> LHsSigType RdrName
- mkLHsSigWcType :: LHsType RdrName -> LHsSigWcType RdrName
- mkClassOpSigs :: [LSig RdrName] -> [LSig RdrName]
- nlHsAppTy :: LHsType name -> LHsType name -> LHsType name
- nlHsTyVar :: name -> LHsType name
- nlHsFunTy :: LHsType name -> LHsType name -> LHsType name
- nlHsTyConApp :: name -> [LHsType name] -> LHsType name
- getAppsTyHead_maybe :: [LHsAppType name] -> Maybe (LHsType name, [LHsType name])
- hsTyGetAppHead_maybe :: LHsType name -> Maybe (Located name, [LHsType name])
- splitHsAppsTy :: [LHsAppType name] -> ([[LHsType name]], [Located name])
- getLHsInstDeclClass_maybe :: LHsSigType name -> Maybe (Located name)
- mkTransformStmt :: PostTc idR Type ~ PlaceHolder => [ExprLStmt idL] -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL)
- mkTransformByStmt :: PostTc idR Type ~ PlaceHolder => [ExprLStmt idL] -> LHsExpr idR -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL)
- mkBodyStmt :: Located (bodyR RdrName) -> StmtLR idL RdrName (Located (bodyR RdrName))
- mkBindStmt :: PostTc idR Type ~ PlaceHolder => LPat idL -> Located (bodyR idR) -> StmtLR idL idR (Located (bodyR idR))
- mkTcBindStmt :: LPat Id -> Located (bodyR Id) -> StmtLR Id Id (Located (bodyR Id))
- mkLastStmt :: Located (bodyR idR) -> StmtLR idL idR (Located (bodyR idR))
- emptyTransStmt :: PostTc idR Type ~ PlaceHolder => StmtLR idL idR (LHsExpr idR)
- mkGroupUsingStmt :: PostTc idR Type ~ PlaceHolder => [ExprLStmt idL] -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL)
- mkGroupByUsingStmt :: PostTc idR Type ~ PlaceHolder => [ExprLStmt idL] -> LHsExpr idR -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL)
- emptyRecStmt :: StmtLR idL RdrName bodyR
- emptyRecStmtName :: StmtLR Name Name bodyR
- emptyRecStmtId :: StmtLR Id Id bodyR
- mkRecStmt :: [LStmtLR idL RdrName bodyR] -> StmtLR idL RdrName bodyR
- mkHsSpliceTy :: LHsExpr RdrName -> HsType RdrName
- mkHsSpliceE :: LHsExpr RdrName -> HsExpr RdrName
- mkHsSpliceTE :: LHsExpr RdrName -> HsExpr RdrName
- mkUntypedSplice :: LHsExpr RdrName -> HsSplice RdrName
- mkHsQuasiQuote :: RdrName -> SrcSpan -> FastString -> HsSplice RdrName
- unqualQuasiQuote :: RdrName
- noRebindableInfo :: PlaceHolder
- collectLocalBinders :: HsLocalBindsLR idL idR -> [idL]
- collectHsValBinders :: HsValBindsLR idL idR -> [idL]
- collectHsBindListBinders :: [LHsBindLR idL idR] -> [idL]
- collectHsIdBinders :: HsValBindsLR idL idR -> [idL]
- collectHsBindsBinders :: LHsBindsLR idL idR -> [idL]
- collectHsBindBinders :: HsBindLR idL idR -> [idL]
- collectMethodBinders :: LHsBindsLR RdrName idR -> [Located RdrName]
- collectPatBinders :: LPat a -> [a]
- collectPatsBinders :: [LPat a] -> [a]
- collectLStmtsBinders :: [LStmtLR idL idR body] -> [idL]
- collectStmtsBinders :: [StmtLR idL idR body] -> [idL]
- collectLStmtBinders :: LStmtLR idL idR body -> [idL]
- collectStmtBinders :: StmtLR idL idR body -> [idL]
- hsLTyClDeclBinders :: Located (TyClDecl name) -> ([Located name], [LFieldOcc name])
- hsTyClForeignBinders :: [TyClGroup Name] -> [LInstDecl Name] -> [LForeignDecl Name] -> [Name]
- hsPatSynBinders :: HsValBinds RdrName -> ([Located RdrName], [Located RdrName])
- hsForeignDeclsBinders :: [LForeignDecl name] -> [Located name]
- hsGroupBinders :: HsGroup Name -> [Name]
- hsDataFamInstBinders :: DataFamInstDecl name -> ([Located name], [LFieldOcc name])
- lStmtsImplicits :: [LStmtLR Name idR (Located (body idR))] -> NameSet
- hsValBindsImplicits :: HsValBindsLR Name idR -> NameSet
- lPatImplicits :: LPat Name -> NameSet

# Documentation

mkHsPar :: LHsExpr id -> LHsExpr id Source

mkHsApp :: LHsExpr name -> LHsExpr name -> LHsExpr name Source

mkHsConApp :: DataCon -> [Type] -> [HsExpr Id] -> LHsExpr Id Source

mkSimpleHsAlt :: LPat id -> Located (body id) -> LMatch id (Located (body id)) Source

mkSimpleMatch :: [LPat id] -> Located (body id) -> LMatch id (Located (body id)) Source

unguardedGRHSs :: Located (body id) -> GRHSs id (Located (body id)) Source

unguardedRHS :: SrcSpan -> Located (body id) -> [LGRHS id (Located (body id))] Source

mkMatchGroup :: Origin -> [LMatch RdrName (Located (body RdrName))] -> MatchGroup RdrName (Located (body RdrName)) Source

mkMatchGroupName :: Origin -> [LMatch Name (Located (body Name))] -> MatchGroup Name (Located (body Name)) Source

mkMatch :: [LPat id] -> LHsExpr id -> Located (HsLocalBinds id) -> LMatch id (LHsExpr id) Source

mkHsLam :: [LPat RdrName] -> LHsExpr RdrName -> LHsExpr RdrName Source

mkHsIf :: LHsExpr id -> LHsExpr id -> LHsExpr id -> HsExpr id Source

mkHsWrap :: HsWrapper -> HsExpr id -> HsExpr id Source

mkLHsWrap :: HsWrapper -> LHsExpr id -> LHsExpr id Source

mkHsWrapCo :: TcCoercionN -> HsExpr id -> HsExpr id Source

mkHsWrapCoR :: TcCoercionR -> HsExpr id -> HsExpr id Source

mkLHsWrapCo :: TcCoercionN -> LHsExpr id -> LHsExpr id Source

mkHsDictLet :: TcEvBinds -> LHsExpr Id -> LHsExpr Id Source

mkHsLams :: [TyVar] -> [EvVar] -> LHsExpr Id -> LHsExpr Id Source

mkHsOpApp :: LHsExpr id -> id -> LHsExpr id -> HsExpr id Source

mkHsDo :: HsStmtContext Name -> [ExprLStmt RdrName] -> HsExpr RdrName Source

mkHsComp :: HsStmtContext Name -> [ExprLStmt RdrName] -> LHsExpr RdrName -> HsExpr RdrName Source

mkHsWrapPat :: HsWrapper -> Pat id -> Type -> Pat id Source

mkHsWrapPatCo :: TcCoercionN -> Pat id -> Type -> Pat id Source

mkLHsPar :: LHsExpr name -> LHsExpr name Source

mkHsCmdWrap :: HsWrapper -> HsCmd id -> HsCmd id Source

mkLHsCmdWrap :: HsWrapper -> LHsCmd id -> LHsCmd id Source

isLHsTypeExpr_maybe :: LHsExpr name -> Maybe (LHsWcType name) Source

Extract a type argument from an HsExpr, with the list of wildcards in the type

isLHsTypeExpr :: LHsExpr name -> Bool Source

Is an expression a visible type application?

nlHsTyApp :: name -> [Type] -> LHsExpr name Source

nlHsTyApps :: name -> [Type] -> [LHsExpr name] -> LHsExpr name Source

nlHsVar :: id -> LHsExpr id Source

nlHsLit :: HsLit -> LHsExpr id Source

nlHsApp :: LHsExpr id -> LHsExpr id -> LHsExpr id Source

nlHsApps :: id -> [LHsExpr id] -> LHsExpr id Source

nlHsSyntaxApps :: SyntaxExpr id -> [LHsExpr id] -> LHsExpr id Source

nlHsIntLit :: Integer -> LHsExpr id Source

nlHsVarApps :: id -> [id] -> LHsExpr id Source

nlHsDo :: HsStmtContext Name -> [LStmt RdrName (LHsExpr RdrName)] -> LHsExpr RdrName Source

nlHsOpApp :: LHsExpr id -> id -> LHsExpr id -> LHsExpr id Source

nlHsLam :: LMatch RdrName (LHsExpr RdrName) -> LHsExpr RdrName Source

nlHsPar :: LHsExpr id -> LHsExpr id Source

nlHsIf :: LHsExpr id -> LHsExpr id -> LHsExpr id -> LHsExpr id Source

nlHsCase :: LHsExpr RdrName -> [LMatch RdrName (LHsExpr RdrName)] -> LHsExpr RdrName Source

nlList :: [LHsExpr RdrName] -> LHsExpr RdrName Source

mkLHsTupleExpr :: [LHsExpr a] -> LHsExpr a Source

mkLHsVarTuple :: [a] -> LHsExpr a Source

missingTupArg :: HsTupArg RdrName Source

toLHsSigWcType :: Type -> LHsSigWcType RdrName Source

Converting a Type to an HsType RdrName This is needed to implement GeneralizedNewtypeDeriving.

Note that we use `getRdrName` extensively, which generates Exact RdrNames rather than strings.

# Constructing general big tuples

mkChunkified Source

Arguments

:: ([a] -> a) | "Small" constructor function, of maximum input arity `mAX_TUPLE_SIZE`
-> [a] | Possible "big" list of things to construct from
-> a | Constructed thing made possible by recursive decomposition

Lifts a "small" constructor into a "big" constructor by recursive decompositon

chunkify :: [a] -> [[a]] Source

Split a list into lists that are small enough to have a corresponding tuple arity. The sub-lists of the result all have length <= `mAX_TUPLE_SIZE` But there may be more than `mAX_TUPLE_SIZE` sub-lists

mkFunBind :: Located RdrName -> [LMatch RdrName (LHsExpr RdrName)] -> HsBind RdrName Source

mkVarBind :: id -> LHsExpr id -> LHsBind id Source

mkHsVarBind :: SrcSpan -> RdrName -> LHsExpr RdrName -> LHsBind RdrName Source

mk_easy_FunBind :: SrcSpan -> RdrName -> [LPat RdrName] -> LHsExpr RdrName -> LHsBind RdrName Source

mkTopFunBind :: Origin -> Located Name -> [LMatch Name (LHsExpr Name)] -> HsBind Name Source

mkPatSynBind :: Located RdrName -> HsPatSynDetails (Located RdrName) -> LPat RdrName -> HsPatSynDir RdrName -> HsBind RdrName Source

isInfixFunBind :: HsBindLR id1 id2 -> Bool Source

If any of the matches in the `FunBind` are infix, the `FunBind` is considered infix.

mkHsIntegral :: String -> Integer -> PostTc RdrName Type -> HsOverLit RdrName Source

mkHsFractional :: FractionalLit -> PostTc RdrName Type -> HsOverLit RdrName Source

mkHsIsString :: String -> FastString -> PostTc RdrName Type -> HsOverLit RdrName Source

mkHsString :: String -> HsLit Source

mkHsStringPrimLit :: FastString -> HsLit Source

mkNPat :: Located (HsOverLit RdrName) -> Maybe (SyntaxExpr RdrName) -> Pat RdrName Source

mkNPlusKPat :: Located RdrName -> Located (HsOverLit RdrName) -> Pat RdrName Source

nlVarPat :: id -> LPat id Source

nlLitPat :: HsLit -> LPat id Source

nlConVarPat :: RdrName -> [RdrName] -> LPat RdrName Source

nlConVarPatName :: Name -> [Name] -> LPat Name Source

nlConPat :: RdrName -> [LPat RdrName] -> LPat RdrName Source

nlConPatName :: Name -> [LPat Name] -> LPat Name Source

nlInfixConPat :: id -> LPat id -> LPat id -> LPat id Source

nlNullaryConPat :: id -> LPat id Source

nlWildConPat :: DataCon -> LPat RdrName Source

nlWildPat :: LPat RdrName Source

nlWildPatName :: LPat Name Source

nlWildPatId :: LPat Id Source

nlTuplePat :: [LPat id] -> Boxity -> LPat id Source

mkParPat :: LPat name -> LPat name Source

mkBigLHsVarTup :: [id] -> LHsExpr id Source

mkBigLHsTup :: [LHsExpr id] -> LHsExpr id Source

mkBigLHsVarPatTup :: [id] -> LPat id Source

mkBigLHsPatTup :: [LPat id] -> LPat id Source

mkHsAppTy :: LHsType name -> LHsType name -> LHsType name Source

mkHsAppTys :: LHsType name -> [LHsType name] -> LHsType name Source

userHsTyVarBndrs :: SrcSpan -> [name] -> [LHsTyVarBndr name] Source

userHsLTyVarBndrs :: SrcSpan -> [Located name] -> [LHsTyVarBndr name] Source

mkLHsSigType :: LHsType RdrName -> LHsSigType RdrName Source

mkLHsSigWcType :: LHsType RdrName -> LHsSigWcType RdrName Source

mkClassOpSigs :: [LSig RdrName] -> [LSig RdrName] Source

nlHsAppTy :: LHsType name -> LHsType name -> LHsType name Source

nlHsTyVar :: name -> LHsType name Source

nlHsFunTy :: LHsType name -> LHsType name -> LHsType name Source

nlHsTyConApp :: name -> [LHsType name] -> LHsType name Source

getAppsTyHead_maybe :: [LHsAppType name] -> Maybe (LHsType name, [LHsType name]) Source

Retrieves the head of an HsAppsTy, if this can be done unambiguously, without consulting fixities.

hsTyGetAppHead_maybe :: LHsType name -> Maybe (Located name, [LHsType name]) Source

splitHsAppsTy :: [LHsAppType name] -> ([[LHsType name]], [Located name]) Source

Splits a [HsAppType name] (the payload of an HsAppsTy) into regions of prefix types (normal types) and infix operators. If `splitHsAppsTy tys = (non_syms, syms)`, then `tys` starts with the first element of `non_syms` followed by the first element of `syms` followed by the next element of `non_syms`, etc. It is guaranteed that the non_syms list has one more element than the syms list.

getLHsInstDeclClass_maybe :: LHsSigType name -> Maybe (Located name) Source

mkTransformStmt :: PostTc idR Type ~ PlaceHolder => [ExprLStmt idL] -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL) Source

mkTransformByStmt :: PostTc idR Type ~ PlaceHolder => [ExprLStmt idL] -> LHsExpr idR -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL) Source

mkBodyStmt :: Located (bodyR RdrName) -> StmtLR idL RdrName (Located (bodyR RdrName)) Source

mkBindStmt :: PostTc idR Type ~ PlaceHolder => LPat idL -> Located (bodyR idR) -> StmtLR idL idR (Located (bodyR idR)) Source

mkTcBindStmt :: LPat Id -> Located (bodyR Id) -> StmtLR Id Id (Located (bodyR Id)) Source

mkLastStmt :: Located (bodyR idR) -> StmtLR idL idR (Located (bodyR idR)) Source

emptyTransStmt :: PostTc idR Type ~ PlaceHolder => StmtLR idL idR (LHsExpr idR) Source

mkGroupUsingStmt :: PostTc idR Type ~ PlaceHolder => [ExprLStmt idL] -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL) Source

mkGroupByUsingStmt :: PostTc idR Type ~ PlaceHolder => [ExprLStmt idL] -> LHsExpr idR -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL) Source

emptyRecStmt :: StmtLR idL RdrName bodyR Source

emptyRecStmtName :: StmtLR Name Name bodyR Source

emptyRecStmtId :: StmtLR Id Id bodyR Source

mkRecStmt :: [LStmtLR idL RdrName bodyR] -> StmtLR idL RdrName bodyR Source

mkHsSpliceTy :: LHsExpr RdrName -> HsType RdrName Source

mkHsSpliceE :: LHsExpr RdrName -> HsExpr RdrName Source

mkHsSpliceTE :: LHsExpr RdrName -> HsExpr RdrName Source

mkUntypedSplice :: LHsExpr RdrName -> HsSplice RdrName Source

mkHsQuasiQuote :: RdrName -> SrcSpan -> FastString -> HsSplice RdrName Source

unqualQuasiQuote :: RdrName Source

noRebindableInfo :: PlaceHolder Source

collectLocalBinders :: HsLocalBindsLR idL idR -> [idL] Source

collectHsValBinders :: HsValBindsLR idL idR -> [idL] Source

collectHsBindListBinders :: [LHsBindLR idL idR] -> [idL] Source

collectHsIdBinders :: HsValBindsLR idL idR -> [idL] Source

collectHsBindsBinders :: LHsBindsLR idL idR -> [idL] Source

collectHsBindBinders :: HsBindLR idL idR -> [idL] Source

collectMethodBinders :: LHsBindsLR RdrName idR -> [Located RdrName] Source

collectPatBinders :: LPat a -> [a] Source

collectPatsBinders :: [LPat a] -> [a] Source

collectLStmtsBinders :: [LStmtLR idL idR body] -> [idL] Source

collectStmtsBinders :: [StmtLR idL idR body] -> [idL] Source

collectLStmtBinders :: LStmtLR idL idR body -> [idL] Source

collectStmtBinders :: StmtLR idL idR body -> [idL] Source

hsLTyClDeclBinders :: Located (TyClDecl name) -> ([Located name], [LFieldOcc name]) Source

Returns all the binding names of the decl. The first one is guaranteed to be the name of the decl. The first component represents all binding names except record fields; the second represents field occurrences. For record fields mentioned in multiple constructors, the SrcLoc will be from the first occurrence.

Each returned (Located name) has a SrcSpan for the whole declaration. See Note [SrcSpan for binders]

hsTyClForeignBinders :: [TyClGroup Name] -> [LInstDecl Name] -> [LForeignDecl Name] -> [Name] Source

hsPatSynBinders :: HsValBinds RdrName -> ([Located RdrName], [Located RdrName]) Source

hsForeignDeclsBinders :: [LForeignDecl name] -> [Located name] Source

hsGroupBinders :: HsGroup Name -> [Name] Source

hsDataFamInstBinders :: DataFamInstDecl name -> ([Located name], [LFieldOcc name]) Source

lStmtsImplicits :: [LStmtLR Name idR (Located (body idR))] -> NameSet Source

hsValBindsImplicits :: HsValBindsLR Name idR -> NameSet Source

lPatImplicits :: LPat Name -> NameSet Source