ghc-7.10.2: The GHC API

Safe HaskellNone
LanguageHaskell2010

HsUtils

Synopsis

Documentation

mkHsPar :: LHsExpr id -> LHsExpr id

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

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))]

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

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

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

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

mkHsWrapPatCo :: TcCoercion -> Pat id -> Type -> Pat id

mkLHsPar :: LHsExpr name -> LHsExpr name

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

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

nlHsVar :: id -> LHsExpr id

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

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

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

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

nlHsPar :: LHsExpr id -> LHsExpr id

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

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

mkNPat :: Located (HsOverLit id) -> Maybe (SyntaxExpr id) -> Pat id

nlVarPat :: id -> LPat id

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

nlNullaryConPat :: id -> LPat id

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

mkParPat :: LPat name -> LPat name

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

userHsTyVarBndrs :: SrcSpan -> [name] -> [Located (HsTyVarBndr name)]

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

nlHsTyVar :: name -> LHsType name

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

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

mkTransformStmt :: [ExprLStmt idL] -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL)

mkTransformByStmt :: [ExprLStmt idL] -> LHsExpr idR -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL)

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

mkBindStmt :: LPat idL -> Located (bodyR idR) -> StmtLR idL idR (Located (bodyR idR))

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

emptyTransStmt :: StmtLR idL idR (LHsExpr idR)

mkGroupUsingStmt :: [ExprLStmt idL] -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL)

mkGroupByUsingStmt :: [ExprLStmt idL] -> LHsExpr idR -> LHsExpr idR -> StmtLR idL idR (LHsExpr idL)

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

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]

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 :: Eq name => Located (TyClDecl name) -> [Located name]

Returns all the binding names of the decl. The first one is guaranteed to be the name of the decl. For record fields mentioned in multiple constructors, the SrcLoc will be from the first occurrence. We use the equality to filter out duplicate field names.

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

hsPatSynBinders :: LHsBindsLR idL idR -> [Located idL]

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