Safe Haskell | None |
---|---|
Language | Haskell2010 |
Specialisations of the HsSyn
syntax for the typechecker
This module is an extension of HsSyn
syntax, for use in the type checker.
Synopsis
- hsLitType :: HsLit (GhcPass p) -> TcType
- hsPatType :: Pat GhcTc -> Type
- hsLPatType :: LPat GhcTc -> Type
- mkHsDictLet :: TcEvBinds -> LHsExpr GhcTc -> LHsExpr GhcTc
- mkHsApp :: forall (id :: Pass). LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id)
- mkHsAppTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p)
- mkHsCaseAlt :: forall (p :: Pass) body. (Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcSpan, Anno (Match (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcSpanAnnA) => LPat (GhcPass p) -> LocatedA (body (GhcPass p)) -> LMatch (GhcPass p) (LocatedA (body (GhcPass p)))
- tcShortCutLit :: HsOverLit GhcRn -> ExpRhoType -> TcM (Maybe (HsOverLit GhcTc))
- shortCutLit :: Platform -> OverLitVal -> TcType -> Maybe (HsExpr GhcTc)
- hsOverLitName :: OverLitVal -> Name
- conLikeResTy :: ConLike -> [Type] -> Type
- type TcId = Id
- type TcIdSet = IdSet
- zonkTopDecls :: Bag EvBind -> LHsBinds GhcTc -> [LRuleDecl GhcTc] -> [LTcSpecPrag] -> [LForeignDecl GhcTc] -> TcM (TypeEnv, Bag EvBind, LHsBinds GhcTc, [LForeignDecl GhcTc], [LTcSpecPrag], [LRuleDecl GhcTc])
- zonkTopExpr :: HsExpr GhcTc -> TcM (HsExpr GhcTc)
- zonkTopLExpr :: LHsExpr GhcTc -> TcM (LHsExpr GhcTc)
- zonkTopBndrs :: [TcId] -> TcM [Id]
- data ZonkEnv
- data ZonkFlexi
- emptyZonkEnv :: TcM ZonkEnv
- mkEmptyZonkEnv :: ZonkFlexi -> TcM ZonkEnv
- initZonkEnv :: (ZonkEnv -> TcM b) -> TcM b
- zonkTyVarBindersX :: ZonkEnv -> [VarBndr TcTyVar vis] -> TcM (ZonkEnv, [VarBndr TyVar vis])
- zonkTyVarBinderX :: ZonkEnv -> VarBndr TcTyVar vis -> TcM (ZonkEnv, VarBndr TyVar vis)
- zonkTyBndrs :: [TcTyVar] -> TcM (ZonkEnv, [TyVar])
- zonkTyBndrsX :: ZonkEnv -> [TcTyVar] -> TcM (ZonkEnv, [TyVar])
- zonkTcTypeToType :: TcType -> TcM Type
- zonkTcTypeToTypeX :: ZonkEnv -> TcType -> TcM Type
- zonkTcTypesToTypesX :: ZonkEnv -> [TcType] -> TcM [Type]
- zonkScaledTcTypesToTypesX :: ZonkEnv -> [Scaled TcType] -> TcM [Scaled Type]
- zonkTyVarOcc :: ZonkEnv -> TyVar -> TcM TcType
- zonkCoToCo :: ZonkEnv -> Coercion -> TcM Coercion
- zonkEvBinds :: ZonkEnv -> Bag EvBind -> TcM (ZonkEnv, Bag EvBind)
- zonkTcEvBinds :: ZonkEnv -> TcEvBinds -> TcM (ZonkEnv, TcEvBinds)
- zonkTcMethInfoToMethInfoX :: ZonkEnv -> TcMethInfo -> TcM MethInfo
- lookupTyVarOcc :: ZonkEnv -> TcTyVar -> Maybe TyVar
Extracting types from HsSyn
hsLPatType :: LPat GhcTc -> Type Source #
Other HsSyn functions
mkHsDictLet :: TcEvBinds -> LHsExpr GhcTc -> LHsExpr GhcTc #
mkHsApp :: forall (id :: Pass). LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) -> LHsExpr (GhcPass id) #
mkHsAppTy :: forall (p :: Pass). LHsType (GhcPass p) -> LHsType (GhcPass p) -> LHsType (GhcPass p) #
mkHsCaseAlt :: forall (p :: Pass) body. (Anno (GRHS (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcSpan, Anno (Match (GhcPass p) (LocatedA (body (GhcPass p)))) ~ SrcSpanAnnA) => LPat (GhcPass p) -> LocatedA (body (GhcPass p)) -> LMatch (GhcPass p) (LocatedA (body (GhcPass p))) #
tcShortCutLit :: HsOverLit GhcRn -> ExpRhoType -> TcM (Maybe (HsOverLit GhcTc)) Source #
shortCutLit :: Platform -> OverLitVal -> TcType -> Maybe (HsExpr GhcTc) Source #
hsOverLitName :: OverLitVal -> Name Source #
conLikeResTy :: ConLike -> [Type] -> Type #
re-exported from TcMonad
Zonking
For a description of "zonking", see Note [What is zonking?] in GHC.Tc.Utils.TcMType
zonkTopDecls :: Bag EvBind -> LHsBinds GhcTc -> [LRuleDecl GhcTc] -> [LTcSpecPrag] -> [LForeignDecl GhcTc] -> TcM (TypeEnv, Bag EvBind, LHsBinds GhcTc, [LForeignDecl GhcTc], [LTcSpecPrag], [LRuleDecl GhcTc]) Source #
zonkTopExpr :: HsExpr GhcTc -> TcM (HsExpr GhcTc) Source #
zonkTopLExpr :: LHsExpr GhcTc -> TcM (LHsExpr GhcTc) Source #
zonkTopBndrs :: [TcId] -> TcM [Id] Source #
See Note [The ZonkEnv] Confused by zonking? See Note [What is zonking?] in GHC.Tc.Utils.TcMType.
emptyZonkEnv :: TcM ZonkEnv Source #
mkEmptyZonkEnv :: ZonkFlexi -> TcM ZonkEnv Source #
initZonkEnv :: (ZonkEnv -> TcM b) -> TcM b Source #
zonkTyVarBindersX :: ZonkEnv -> [VarBndr TcTyVar vis] -> TcM (ZonkEnv, [VarBndr TyVar vis]) Source #
zonkTcTypeToType :: TcType -> TcM Type Source #
zonkEvBinds :: ZonkEnv -> Bag EvBind -> TcM (ZonkEnv, Bag EvBind) Source #
zonkTcEvBinds :: ZonkEnv -> TcEvBinds -> TcM (ZonkEnv, TcEvBinds) Source #
zonkTcMethInfoToMethInfoX :: ZonkEnv -> TcMethInfo -> TcM MethInfo Source #