Safe Haskell | None |
---|---|
Language | Haskell2010 |
TcEnv
Contents
- data TyThing
- data TcTyThing
- = AGlobal TyThing
- | ATcId {
- tct_id :: TcId
- tct_closed :: TopLevelFlag
- | ATyVar Name TcTyVar
- | ATcTyCon TyCon
- | APromotionErr PromotionErr
- type TcId = Id
- data InstInfo a = InstInfo {
- iSpec :: ClsInst
- iBinds :: InstBindings a
- iDFunId :: InstInfo a -> DFunId
- pprInstInfoDetails :: OutputableBndr a => InstInfo a -> SDoc
- simpleInstInfoClsTy :: InstInfo a -> (Class, Type)
- simpleInstInfoTy :: InstInfo a -> Type
- simpleInstInfoTyCon :: InstInfo a -> TyCon
- data InstBindings a = InstBindings {
- ib_tyvars :: [Name]
- ib_binds :: LHsBinds a
- ib_pragmas :: [LSig a]
- ib_extensions :: [Extension]
- ib_derived :: Bool
- tcExtendGlobalEnv :: [TyThing] -> TcM r -> TcM r
- tcExtendTyConEnv :: [TyCon] -> TcM r -> TcM r
- tcExtendGlobalEnvImplicit :: [TyThing] -> TcM r -> TcM r
- setGlobalTypeEnv :: TcGblEnv -> TypeEnv -> TcM TcGblEnv
- tcExtendGlobalValEnv :: [Id] -> TcM a -> TcM a
- tcLookupLocatedGlobal :: Located Name -> TcM TyThing
- tcLookupGlobal :: Name -> TcM TyThing
- tcLookupTyCon :: Name -> TcM TyCon
- tcLookupClass :: Name -> TcM Class
- tcLookupDataCon :: Name -> TcM DataCon
- tcLookupPatSyn :: Name -> TcM PatSyn
- tcLookupConLike :: Name -> TcM ConLike
- tcLookupLocatedGlobalId :: Located Name -> TcM Id
- tcLookupLocatedTyCon :: Located Name -> TcM TyCon
- tcLookupLocatedClass :: Located Name -> TcM Class
- tcLookupAxiom :: Name -> TcM (CoAxiom Branched)
- lookupGlobal :: HscEnv -> Name -> IO TyThing
- tcExtendKindEnv2 :: [(Name, TcTyThing)] -> TcM r -> TcM r
- tcExtendTyVarEnv :: [TyVar] -> TcM r -> TcM r
- tcExtendTyVarEnv2 :: [(Name, TcTyVar)] -> TcM r -> TcM r
- tcExtendLetEnv :: TopLevelFlag -> [TcId] -> TcM a -> TcM a
- tcExtendLetEnvIds :: TopLevelFlag -> [(Name, TcId)] -> TcM a -> TcM a
- tcExtendIdEnv :: [TcId] -> TcM a -> TcM a
- tcExtendIdEnv1 :: Name -> TcId -> TcM a -> TcM a
- tcExtendIdEnv2 :: [(Name, TcId)] -> TcM a -> TcM a
- tcExtendIdBndrs :: [TcIdBinder] -> TcM a -> TcM a
- tcExtendLocalTypeEnv :: TcLclEnv -> [(Name, TcTyThing)] -> TcM TcLclEnv
- isClosedLetBndr :: Id -> TopLevelFlag
- tcLookup :: Name -> TcM TcTyThing
- tcLookupLocated :: Located Name -> TcM TcTyThing
- tcLookupLocalIds :: [Name] -> TcM [TcId]
- tcLookupId :: Name -> TcM Id
- tcLookupTyVar :: Name -> TcM TcTyVar
- tcLookupLcl_maybe :: Name -> TcM (Maybe TcTyThing)
- getScopedTyVarBinds :: TcM [(Name, TcTyVar)]
- getInLocalScope :: TcM (Name -> Bool)
- wrongThingErr :: String -> TcTyThing -> Name -> TcM a
- pprBinders :: [Name] -> SDoc
- tcAddDataFamConPlaceholders :: [LInstDecl Name] -> TcM a -> TcM a
- tcAddPatSynPlaceholders :: [PatSynBind Name Name] -> TcM a -> TcM a
- getPatSynBinds :: [(RecFlag, LHsBinds Name)] -> [PatSynBind Name Name]
- getTypeSigNames :: [LSig Name] -> NameSet
- tcExtendRecEnv :: [(Name, TyThing)] -> TcM r -> TcM r
- tcLookupInstance :: Class -> [Type] -> TcM ClsInst
- tcGetInstEnvs :: TcM InstEnvs
- tcExtendRules :: [LRuleDecl Id] -> TcM a -> TcM a
- tcGetDefaultTys :: TcM ([Type], (Bool, Bool))
- tcGetGlobalTyCoVars :: TcM TcTyVarSet
- checkWellStaged :: SDoc -> ThLevel -> ThLevel -> TcM ()
- tcMetaTy :: Name -> TcM Type
- thLevel :: ThStage -> ThLevel
- topIdLvl :: Id -> ThLevel
- isBrackStage :: ThStage -> Bool
- newLocalName :: Name -> TcM Name
- newDFunName :: Class -> [Type] -> SrcSpan -> TcM Name
- newDFunName' :: Class -> TyCon -> TcM Name
- newFamInstTyConName :: Located Name -> [Type] -> TcM Name
- newFamInstAxiomName :: SrcSpan -> Name -> [CoAxBranch] -> TcM Name
- mkStableIdFromString :: String -> Type -> SrcSpan -> (OccName -> OccName) -> TcM TcId
- mkStableIdFromName :: Name -> Type -> SrcSpan -> (OccName -> OccName) -> TcM TcId
- mkWrapperName :: (MonadIO m, HasDynFlags m, HasModule m) => String -> String -> m FastString
Documentation
data TyThing
A global typecheckable-thing, essentially anything that has a name.
Not to be confused with a TcTyThing
, which is also a typecheckable
thing but in the *local* context. See TcEnv
for how to retrieve
a TyThing
given a Name
.
Instances
data TcTyThing
A typecheckable thing available in a local context. Could be
AGlobal
TyThing
, but also lexically scoped variables, etc.
See TcEnv
for how to retrieve a TyThing
given a Name
.
Constructors
AGlobal TyThing | |
ATcId | |
Fields
| |
ATyVar Name TcTyVar | |
ATcTyCon TyCon | |
APromotionErr PromotionErr |
Instances
data InstInfo a
Constructors
InstInfo | |
Fields
|
Instances
OutputableBndr a => Outputable (InstInfo a) | |
pprInstInfoDetails :: OutputableBndr a => InstInfo a -> SDoc
simpleInstInfoClsTy :: InstInfo a -> (Class, Type)
simpleInstInfoTy :: InstInfo a -> Type
simpleInstInfoTyCon :: InstInfo a -> TyCon
data InstBindings a
Constructors
InstBindings | |
Fields
|
tcExtendGlobalEnv :: [TyThing] -> TcM r -> TcM r
tcExtendTyConEnv :: [TyCon] -> TcM r -> TcM r
tcExtendGlobalEnvImplicit :: [TyThing] -> TcM r -> TcM r
setGlobalTypeEnv :: TcGblEnv -> TypeEnv -> TcM TcGblEnv
tcExtendGlobalValEnv :: [Id] -> TcM a -> TcM a
tcLookupGlobal :: Name -> TcM TyThing
tcLookupTyCon :: Name -> TcM TyCon
tcLookupClass :: Name -> TcM Class
tcLookupDataCon :: Name -> TcM DataCon
tcLookupPatSyn :: Name -> TcM PatSyn
tcLookupConLike :: Name -> TcM ConLike
tcLookupLocatedGlobalId :: Located Name -> TcM Id
tcLookupLocatedTyCon :: Located Name -> TcM TyCon
tcLookupLocatedClass :: Located Name -> TcM Class
tcLookupAxiom :: Name -> TcM (CoAxiom Branched)
lookupGlobal :: HscEnv -> Name -> IO TyThing
tcExtendKindEnv2 :: [(Name, TcTyThing)] -> TcM r -> TcM r
tcExtendTyVarEnv :: [TyVar] -> TcM r -> TcM r
tcExtendTyVarEnv2 :: [(Name, TcTyVar)] -> TcM r -> TcM r
tcExtendLetEnv :: TopLevelFlag -> [TcId] -> TcM a -> TcM a
tcExtendLetEnvIds :: TopLevelFlag -> [(Name, TcId)] -> TcM a -> TcM a
tcExtendIdEnv :: [TcId] -> TcM a -> TcM a
tcExtendIdEnv1 :: Name -> TcId -> TcM a -> TcM a
tcExtendIdEnv2 :: [(Name, TcId)] -> TcM a -> TcM a
tcExtendIdBndrs :: [TcIdBinder] -> TcM a -> TcM a
isClosedLetBndr :: Id -> TopLevelFlag
tcLookupLocated :: Located Name -> TcM TcTyThing
tcLookupLocalIds :: [Name] -> TcM [TcId]
tcLookupId :: Name -> TcM Id
tcLookupTyVar :: Name -> TcM TcTyVar
tcLookupLcl_maybe :: Name -> TcM (Maybe TcTyThing)
getScopedTyVarBinds :: TcM [(Name, TcTyVar)]
getInLocalScope :: TcM (Name -> Bool)
wrongThingErr :: String -> TcTyThing -> Name -> TcM a
pprBinders :: [Name] -> SDoc
tcAddDataFamConPlaceholders :: [LInstDecl Name] -> TcM a -> TcM a
tcAddPatSynPlaceholders :: [PatSynBind Name Name] -> TcM a -> TcM a
getPatSynBinds :: [(RecFlag, LHsBinds Name)] -> [PatSynBind Name Name]
getTypeSigNames :: [LSig Name] -> NameSet
tcExtendRecEnv :: [(Name, TyThing)] -> TcM r -> TcM r
tcLookupInstance :: Class -> [Type] -> TcM ClsInst
tcExtendRules :: [LRuleDecl Id] -> TcM a -> TcM a
tcGetDefaultTys :: TcM ([Type], (Bool, Bool))
tcGetGlobalTyCoVars :: TcM TcTyVarSet
tcGetGlobalTyCoVars
returns a fully-zonked set of *scoped* tyvars free in
the environment. To improve subsequent calls to the same function it writes
the zonked set back into the environment. Note that this returns all
variables free in anything (term-level or type-level) in scope. We thus
don't have to worry about clashes with things that are not in scope, because
if they are reachable, then they'll be returned here.
checkWellStaged :: SDoc -> ThLevel -> ThLevel -> TcM ()
isBrackStage :: ThStage -> Bool
newLocalName :: Name -> TcM Name
newDFunName :: Class -> [Type] -> SrcSpan -> TcM Name
Make a name for the dict fun for an instance decl. It's an *external* name, like other top-level names, and hence must be made with newGlobalBinder.
newDFunName' :: Class -> TyCon -> TcM Name
Special case of newDFunName
to generate dict fun name for a single TyCon.
newFamInstAxiomName :: SrcSpan -> Name -> [CoAxBranch] -> TcM Name
mkWrapperName :: (MonadIO m, HasDynFlags m, HasModule m) => String -> String -> m FastString