Safe Haskell | None |
---|---|
Language | Haskell2010 |
TcRnTypes
- type TcRnIf a b = IOEnv (Env a b)
- type TcRn = TcRnIf TcGblEnv TcLclEnv
- type TcM = TcRn
- type RnM = TcRn
- type IfM lcl = TcRnIf IfGblEnv lcl
- type IfL = IfM IfLclEnv
- type IfG = IfM ()
- type TcRef a = IORef a
- data Env gbl lcl = Env {}
- data TcGblEnv = TcGblEnv {
- tcg_mod :: Module
- tcg_src :: HscSource
- tcg_sig_of :: Maybe Module
- tcg_impl_rdr_env :: Maybe GlobalRdrEnv
- tcg_rdr_env :: GlobalRdrEnv
- tcg_default :: Maybe [Type]
- tcg_fix_env :: FixityEnv
- tcg_field_env :: RecFieldEnv
- tcg_type_env :: TypeEnv
- tcg_type_env_var :: TcRef TypeEnv
- tcg_inst_env :: InstEnv
- tcg_fam_inst_env :: FamInstEnv
- tcg_ann_env :: AnnEnv
- tcg_visible_orphan_mods :: ModuleSet
- tcg_exports :: [AvailInfo]
- tcg_imports :: ImportAvails
- tcg_dus :: DefUses
- tcg_used_rdrnames :: TcRef (Set RdrName)
- tcg_keep :: TcRef NameSet
- tcg_th_used :: TcRef Bool
- tcg_th_splice_used :: TcRef Bool
- tcg_dfun_n :: TcRef OccSet
- tcg_rn_exports :: Maybe [Located (IE Name)]
- tcg_rn_imports :: [LImportDecl Name]
- tcg_rn_decls :: Maybe (HsGroup Name)
- tcg_dependent_files :: TcRef [FilePath]
- tcg_th_topdecls :: TcRef [LHsDecl RdrName]
- tcg_th_topnames :: TcRef NameSet
- tcg_th_modfinalizers :: TcRef [Q ()]
- tcg_th_state :: TcRef (Map TypeRep Dynamic)
- tcg_ev_binds :: Bag EvBind
- tcg_binds :: LHsBinds Id
- tcg_sigs :: NameSet
- tcg_imp_specs :: [LTcSpecPrag]
- tcg_warns :: Warnings
- tcg_anns :: [Annotation]
- tcg_tcs :: [TyCon]
- tcg_insts :: [ClsInst]
- tcg_fam_insts :: [FamInst]
- tcg_rules :: [LRuleDecl Id]
- tcg_fords :: [LForeignDecl Id]
- tcg_vects :: [LVectDecl Id]
- tcg_patsyns :: [PatSyn]
- tcg_doc_hdr :: Maybe LHsDocString
- tcg_hpc :: AnyHpcUsage
- tcg_main :: Maybe Name
- tcg_safeInfer :: TcRef Bool
- tcg_tc_plugins :: [TcPluginSolver]
- tcg_static_wc :: TcRef WantedConstraints
- data TcLclEnv = TcLclEnv {
- tcl_loc :: RealSrcSpan
- tcl_ctxt :: [ErrCtxt]
- tcl_tclvl :: TcLevel
- tcl_th_ctxt :: ThStage
- tcl_th_bndrs :: ThBindEnv
- tcl_arrow_ctxt :: ArrowCtxt
- tcl_rdr :: LocalRdrEnv
- tcl_env :: TcTypeEnv
- tcl_bndrs :: [TcIdBinder]
- tcl_tidy :: TidyEnv
- tcl_tyvars :: TcRef TcTyVarSet
- tcl_lie :: TcRef WantedConstraints
- tcl_errs :: TcRef Messages
- data IfGblEnv = IfGblEnv {
- if_rec_types :: Maybe (Module, IfG TypeEnv)
- data IfLclEnv = IfLclEnv {}
- type ErrCtxt = (Bool, TidyEnv -> TcM (TidyEnv, MsgDoc))
- data RecFieldEnv = RecFields (NameEnv [Name]) NameSet
- data ImportAvails = ImportAvails {}
- emptyImportAvails :: ImportAvails
- plusImportAvails :: ImportAvails -> ImportAvails -> ImportAvails
- data WhereFrom
- mkModDeps :: [(ModuleName, IsBootInterface)] -> ModuleNameEnv (ModuleName, IsBootInterface)
- type TcTypeEnv = NameEnv TcTyThing
- data TcIdBinder = TcIdBndr TcId TopLevelFlag
- data TcTyThing
- = AGlobal TyThing
- | ATcId {
- tct_id :: TcId
- tct_closed :: TopLevelFlag
- | ATyVar Name TcTyVar
- | AThing TcKind
- | APromotionErr PromotionErr
- data PromotionErr
- pprTcTyThingCategory :: TcTyThing -> SDoc
- pprPECategory :: PromotionErr -> SDoc
- type DsM = TcRnIf DsGblEnv DsLclEnv
- data DsLclEnv = DsLclEnv {}
- data DsGblEnv = DsGblEnv {
- ds_mod :: Module
- ds_fam_inst_env :: FamInstEnv
- ds_unqual :: PrintUnqualified
- ds_msgs :: IORef Messages
- ds_if_env :: (IfGblEnv, IfLclEnv)
- ds_dph_env :: GlobalRdrEnv
- ds_parr_bi :: PArrBuiltin
- ds_static_binds :: IORef [(Fingerprint, (Id, CoreExpr))]
- data PArrBuiltin = PArrBuiltin {
- lengthPVar :: Var
- replicatePVar :: Var
- singletonPVar :: Var
- mapPVar :: Var
- filterPVar :: Var
- zipPVar :: Var
- crossMapPVar :: Var
- indexPVar :: Var
- emptyPVar :: Var
- appPVar :: Var
- enumFromToPVar :: Var
- enumFromThenToPVar :: Var
- type DsMetaEnv = NameEnv DsMetaVal
- data DsMetaVal
- data ThStage
- data PendingStuff
- topStage :: ThStage
- topAnnStage :: ThStage
- topSpliceStage :: ThStage
- type ThLevel = Int
- impLevel :: ThLevel
- outerLevel :: ThLevel
- thLevel :: ThStage -> ThLevel
- data ArrowCtxt
- type Xi = Type
- data Ct
- = CDictCan { }
- | CIrredEvCan {
- cc_ev :: CtEvidence
- | CTyEqCan { }
- | CFunEqCan { }
- | CNonCanonical {
- cc_ev :: CtEvidence
- | CHoleCan { }
- type Cts = Bag Ct
- emptyCts :: Cts
- andCts :: Cts -> Cts -> Cts
- andManyCts :: [Cts] -> Cts
- pprCts :: Cts -> SDoc
- singleCt :: Ct -> Cts
- listToCts :: [Ct] -> Cts
- ctsElts :: Cts -> [Ct]
- consCts :: Ct -> Cts -> Cts
- snocCts :: Cts -> Ct -> Cts
- extendCtsList :: Cts -> [Ct] -> Cts
- isEmptyCts :: Cts -> Bool
- isCTyEqCan :: Ct -> Bool
- isCFunEqCan :: Ct -> Bool
- isCDictCan_Maybe :: Ct -> Maybe Class
- isCFunEqCan_maybe :: Ct -> Maybe (TyCon, [Type])
- isCIrredEvCan :: Ct -> Bool
- isCNonCanonical :: Ct -> Bool
- isWantedCt :: Ct -> Bool
- isDerivedCt :: Ct -> Bool
- isGivenCt :: Ct -> Bool
- isHoleCt :: Ct -> Bool
- isTypedHoleCt :: Ct -> Bool
- isPartialTypeSigCt :: Ct -> Bool
- ctEvidence :: Ct -> CtEvidence
- ctLoc :: Ct -> CtLoc
- ctPred :: Ct -> PredType
- ctFlavour :: Ct -> CtFlavour
- ctEqRel :: Ct -> EqRel
- mkNonCanonical :: CtEvidence -> Ct
- mkNonCanonicalCt :: Ct -> Ct
- ctEvPred :: CtEvidence -> TcPredType
- ctEvLoc :: CtEvidence -> CtLoc
- ctEvEqRel :: CtEvidence -> EqRel
- ctEvTerm :: CtEvidence -> EvTerm
- ctEvCoercion :: CtEvidence -> TcCoercion
- ctEvId :: CtEvidence -> TcId
- ctEvCheckDepth :: Class -> CtLoc -> CtEvidence -> Bool
- data WantedConstraints = WC {}
- insolubleWC :: WantedConstraints -> Bool
- emptyWC :: WantedConstraints
- isEmptyWC :: WantedConstraints -> Bool
- andWC :: WantedConstraints -> WantedConstraints -> WantedConstraints
- unionsWC :: [WantedConstraints] -> WantedConstraints
- addSimples :: WantedConstraints -> Bag Ct -> WantedConstraints
- addImplics :: WantedConstraints -> Bag Implication -> WantedConstraints
- mkSimpleWC :: [Ct] -> WantedConstraints
- addInsols :: WantedConstraints -> Bag Ct -> WantedConstraints
- dropDerivedWC :: WantedConstraints -> WantedConstraints
- data Implication = Implic {}
- data SubGoalCounter
- data SubGoalDepth
- initialSubGoalDepth :: SubGoalDepth
- maxSubGoalDepth :: DynFlags -> SubGoalDepth
- bumpSubGoalDepth :: SubGoalCounter -> SubGoalDepth -> SubGoalDepth
- subGoalCounterValue :: SubGoalCounter -> SubGoalDepth -> Int
- subGoalDepthExceeded :: SubGoalDepth -> SubGoalDepth -> Maybe SubGoalCounter
- data CtLoc = CtLoc {}
- ctLocSpan :: CtLoc -> RealSrcSpan
- ctLocEnv :: CtLoc -> TcLclEnv
- ctLocOrigin :: CtLoc -> CtOrigin
- ctLocDepth :: CtLoc -> SubGoalDepth
- bumpCtLocDepth :: SubGoalCounter -> CtLoc -> CtLoc
- setCtLocOrigin :: CtLoc -> CtOrigin -> CtLoc
- setCtLocEnv :: CtLoc -> TcLclEnv -> CtLoc
- setCtLocSpan :: CtLoc -> RealSrcSpan -> CtLoc
- data CtOrigin
- = GivenOrigin SkolemInfo
- | OccurrenceOf Name
- | AppOrigin
- | SpecPragOrigin Name
- | TypeEqOrigin {
- uo_actual :: TcType
- uo_expected :: TcType
- | KindEqOrigin TcType TcType CtOrigin
- | CoercibleOrigin TcType TcType
- | IPOccOrigin HsIPName
- | LiteralOrigin (HsOverLit Name)
- | NegateOrigin
- | ArithSeqOrigin (ArithSeqInfo Name)
- | PArrSeqOrigin (ArithSeqInfo Name)
- | SectionOrigin
- | TupleOrigin
- | ExprSigOrigin
- | PatSigOrigin
- | PatOrigin
- | RecordUpdOrigin
- | ViewPatOrigin
- | ScOrigin
- | DerivOrigin
- | DerivOriginDC DataCon Int
- | DerivOriginCoerce Id Type Type
- | StandAloneDerivOrigin
- | DefaultOrigin
- | DoOrigin
- | MCompOrigin
- | IfOrigin
- | ProcOrigin
- | AnnOrigin
- | FunDepOrigin1 PredType CtLoc PredType CtLoc
- | FunDepOrigin2 PredType CtOrigin PredType SrcSpan
- | HoleOrigin
- | UnboundOccurrenceOf RdrName
- | ListOrigin
- | StaticOrigin
- pprCtOrigin :: CtOrigin -> SDoc
- pushErrCtxt :: CtOrigin -> ErrCtxt -> CtLoc -> CtLoc
- pushErrCtxtSameOrigin :: ErrCtxt -> CtLoc -> CtLoc
- data SkolemInfo
- data CtEvidence
- mkGivenLoc :: TcLevel -> SkolemInfo -> TcLclEnv -> CtLoc
- isWanted :: CtEvidence -> Bool
- isGiven :: CtEvidence -> Bool
- isDerived :: CtEvidence -> Bool
- ctEvRole :: CtEvidence -> Role
- data TcPlugin = forall s . TcPlugin {
- tcPluginInit :: TcPluginM s
- tcPluginSolve :: s -> TcPluginSolver
- tcPluginStop :: s -> TcPluginM ()
- data TcPluginResult
- = TcPluginContradiction [Ct]
- | TcPluginOk [(EvTerm, Ct)] [Ct]
- type TcPluginSolver = [Ct] -> [Ct] -> [Ct] -> TcPluginM TcPluginResult
- data TcPluginM a
- runTcPluginM :: TcPluginM a -> TcM a
- unsafeTcPluginTcM :: TcM a -> TcPluginM a
- data CtFlavour
- ctEvFlavour :: CtEvidence -> CtFlavour
- pprEvVarTheta :: [EvVar] -> SDoc
- pprEvVars :: [EvVar] -> SDoc
- pprEvVarWithType :: EvVar -> SDoc
- pprArising :: CtOrigin -> SDoc
- pprArisingAt :: CtLoc -> SDoc
- type TcId = Id
- type TcIdSet = IdSet
- data HoleSort
Documentation
data Env gbl lcl
Instances
ContainsModule gbl => ContainsModule (Env gbl lcl) | |
ContainsDynFlags (Env gbl lcl) |
data TcGblEnv
TcGblEnv
describes the top-level of the module at the
point at which the typechecker is finished work.
It is this structure that is handed on to the desugarer
For state that needs to be updated during the typechecking
phase and returned at end, use a TcRef
(= IORef
).
Constructors
TcGblEnv | |
Fields
|
Instances
data TcLclEnv
Constructors
TcLclEnv | |
Fields
|
data IfLclEnv
data RecFieldEnv
data ImportAvails
ImportAvails
summarises what was imported from where, irrespective of
whether the imported things are actually used or not. It is used:
- when processing the export list,
- when constructing usage info for the interface file,
- to identify the list of directly imported modules for initialisation purposes and for optimised overlap checking of family instances,
- when figuring out what things are really unused
Constructors
ImportAvails | |
Fields
|
plusImportAvails :: ImportAvails -> ImportAvails -> ImportAvails
Union two ImportAvails
This function is a key part of Import handling, basically for each import we create a separate ImportAvails structure and then union them all together with this function.
mkModDeps :: [(ModuleName, IsBootInterface)] -> ModuleNameEnv (ModuleName, IsBootInterface)
data TcIdBinder
Constructors
TcIdBndr TcId TopLevelFlag |
data TcTyThing
Constructors
AGlobal TyThing | |
ATcId | |
Fields
| |
ATyVar Name TcTyVar | |
AThing TcKind | |
APromotionErr PromotionErr |
Instances
pprPECategory :: PromotionErr -> SDoc
data DsGblEnv
Constructors
DsGblEnv | |
Fields
|
Instances
data PArrBuiltin
Constructors
PArrBuiltin | |
Fields
|
data PendingStuff
Constructors
RnPendingUntyped (TcRef [PendingRnSplice]) | |
RnPendingTyped | |
TcPending (TcRef [PendingTcSplice]) (TcRef WantedConstraints) |
data ArrowCtxt
Constructors
NoArrowCtxt | |
ArrowCtxt LocalRdrEnv (TcRef WantedConstraints) |
data Ct
Constructors
CDictCan | |
CIrredEvCan | |
Fields
| |
CTyEqCan | |
CFunEqCan | |
CNonCanonical | |
Fields
| |
CHoleCan | |
Instances
andManyCts :: [Cts] -> Cts
extendCtsList :: Cts -> [Ct] -> Cts
isEmptyCts :: Cts -> Bool
isCTyEqCan :: Ct -> Bool
isCFunEqCan :: Ct -> Bool
isCDictCan_Maybe :: Ct -> Maybe Class
isCFunEqCan_maybe :: Ct -> Maybe (TyCon, [Type])
isCIrredEvCan :: Ct -> Bool
isCNonCanonical :: Ct -> Bool
isWantedCt :: Ct -> Bool
isDerivedCt :: Ct -> Bool
isTypedHoleCt :: Ct -> Bool
isPartialTypeSigCt :: Ct -> Bool
ctEvidence :: Ct -> CtEvidence
mkNonCanonical :: CtEvidence -> Ct
mkNonCanonicalCt :: Ct -> Ct
ctEvPred :: CtEvidence -> TcPredType
ctEvLoc :: CtEvidence -> CtLoc
ctEvEqRel :: CtEvidence -> EqRel
Get the equality relation relevant for a CtEvidence
ctEvTerm :: CtEvidence -> EvTerm
ctEvCoercion :: CtEvidence -> TcCoercion
ctEvId :: CtEvidence -> TcId
ctEvCheckDepth :: Class -> CtLoc -> CtEvidence -> Bool
Checks whether the evidence can be used to solve a goal with the given minimum depth See Note [Preventing recursive dictionaries]
data WantedConstraints
Instances
insolubleWC :: WantedConstraints -> Bool
isEmptyWC :: WantedConstraints -> Bool
addSimples :: WantedConstraints -> Bag Ct -> WantedConstraints
mkSimpleWC :: [Ct] -> WantedConstraints
addInsols :: WantedConstraints -> Bag Ct -> WantedConstraints
data SubGoalCounter
Constructors
CountConstraints | |
CountTyFunApps |
data SubGoalDepth
Instances
subGoalCounterValue :: SubGoalCounter -> SubGoalDepth -> Int
data CtLoc
Constructors
CtLoc | |
Fields
|
ctLocSpan :: CtLoc -> RealSrcSpan
ctLocOrigin :: CtLoc -> CtOrigin
ctLocDepth :: CtLoc -> SubGoalDepth
bumpCtLocDepth :: SubGoalCounter -> CtLoc -> CtLoc
setCtLocOrigin :: CtLoc -> CtOrigin -> CtLoc
setCtLocEnv :: CtLoc -> TcLclEnv -> CtLoc
setCtLocSpan :: CtLoc -> RealSrcSpan -> CtLoc
data CtOrigin
Constructors
pprCtOrigin :: CtOrigin -> SDoc
pushErrCtxt :: CtOrigin -> ErrCtxt -> CtLoc -> CtLoc
pushErrCtxtSameOrigin :: ErrCtxt -> CtLoc -> CtLoc
data SkolemInfo
Constructors
Instances
data CtEvidence
Instances
mkGivenLoc :: TcLevel -> SkolemInfo -> TcLclEnv -> CtLoc
isWanted :: CtEvidence -> Bool
isGiven :: CtEvidence -> Bool
isDerived :: CtEvidence -> Bool
ctEvRole :: CtEvidence -> Role
Get the role relevant for a CtEvidence
data TcPlugin
Constructors
forall s . TcPlugin | |
Fields
|
data TcPluginResult
Constructors
TcPluginContradiction [Ct] | The plugin found a contradiction. The returned constraints are removed from the inert set, and recorded as insoluable. |
TcPluginOk [(EvTerm, Ct)] [Ct] | The first field is for constraints that were solved. These are removed from the inert set, and the evidence for them is recorded. The second field contains new work, that should be processed by the constraint solver. |
type TcPluginSolver = [Ct] -> [Ct] -> [Ct] -> TcPluginM TcPluginResult
runTcPluginM :: TcPluginM a -> TcM a
unsafeTcPluginTcM :: TcM a -> TcPluginM a
ctEvFlavour :: CtEvidence -> CtFlavour
pprEvVarTheta :: [EvVar] -> SDoc
pprEvVarWithType :: EvVar -> SDoc
pprArising :: CtOrigin -> SDoc
pprArisingAt :: CtLoc -> SDoc