Safe Haskell | None |
---|---|
Language | Haskell98 |
- 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_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_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
- data TcLclEnv = TcLclEnv {
- tcl_loc :: SrcSpan
- tcl_ctxt :: [ErrCtxt]
- tcl_untch :: Untouchables
- 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
- data ThStage
- data PendingStuff
- topStage :: ThStage
- topAnnStage :: ThStage
- topSpliceStage :: ThStage
- type ThLevel = Int
- impLevel :: ThLevel
- outerLevel :: ThLevel
- thLevel :: ThStage -> ThLevel
- data ArrowCtxt = NoArrowCtxt
- newArrowScope :: TcM a -> TcM a
- escapeArrowScope :: TcM a -> TcM a
- type Xi = Type
- data Ct
- = CDictCan { }
- | CIrredEvCan {
- cc_ev :: CtEvidence
- | CTyEqCan { }
- | CFunEqCan { }
- | CNonCanonical {
- cc_ev :: CtEvidence
- | CHoleCan {
- cc_ev :: CtEvidence
- cc_occ :: OccName
- type Cts = Bag Ct
- emptyCts :: Cts
- andCts :: Cts -> Cts -> Cts
- andManyCts :: [Cts] -> Cts
- dropDerivedWC :: WantedConstraints -> WantedConstraints
- singleCt :: Ct -> Cts
- listToCts :: [Ct] -> Cts
- ctsElts :: Cts -> [Ct]
- extendCts :: 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
- ctEvidence :: Ct -> CtEvidence
- ctLoc :: Ct -> CtLoc
- ctPred :: Ct -> PredType
- mkNonCanonical :: CtEvidence -> Ct
- mkNonCanonicalCt :: Ct -> Ct
- ctEvPred :: CtEvidence -> TcPredType
- ctEvTerm :: CtEvidence -> EvTerm
- ctEvId :: CtEvidence -> TcId
- ctEvCheckDepth :: SubGoalDepth -> CtEvidence -> Bool
- data WantedConstraints = WC {}
- insolubleWC :: WantedConstraints -> Bool
- emptyWC :: WantedConstraints
- isEmptyWC :: WantedConstraints -> Bool
- andWC :: WantedConstraints -> WantedConstraints -> WantedConstraints
- unionsWC :: [WantedConstraints] -> WantedConstraints
- addFlats :: WantedConstraints -> Bag Ct -> WantedConstraints
- addImplics :: WantedConstraints -> Bag Implication -> WantedConstraints
- mkFlatWC :: [Ct] -> WantedConstraints
- addInsols :: WantedConstraints -> Bag Ct -> WantedConstraints
- data Implication = Implic {
- ic_untch :: Untouchables
- ic_skols :: [TcTyVar]
- ic_info :: SkolemInfo
- ic_given :: [EvVar]
- ic_fsks :: [TcTyVar]
- ic_no_eqs :: Bool
- ic_env :: TcLclEnv
- ic_wanted :: WantedConstraints
- ic_insol :: Bool
- ic_binds :: EvBindsVar
- 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 -> SrcSpan
- ctLocEnv :: CtLoc -> TcLclEnv
- ctLocOrigin :: CtLoc -> CtOrigin
- ctLocDepth :: CtLoc -> SubGoalDepth
- bumpCtLocDepth :: SubGoalCounter -> CtLoc -> CtLoc
- setCtLocOrigin :: CtLoc -> CtOrigin -> CtLoc
- setCtLocEnv :: CtLoc -> TcLclEnv -> CtLoc
- data CtOrigin
- = GivenOrigin SkolemInfo
- | FlatSkolOrigin
- | OccurrenceOf Name
- | AppOrigin
- | SpecPragOrigin Name
- | TypeEqOrigin {
- uo_actual :: TcType
- uo_expected :: TcType
- | KindEqOrigin TcType TcType CtOrigin
- | IPOccOrigin HsIPName
- | LiteralOrigin (HsOverLit Name)
- | NegateOrigin
- | ArithSeqOrigin (ArithSeqInfo Name)
- | PArrSeqOrigin (ArithSeqInfo Name)
- | SectionOrigin
- | TupleOrigin
- | AmbigOrigin UserTypeCtxt
- | ExprSigOrigin
- | PatSigOrigin
- | PatOrigin
- | RecordUpdOrigin
- | ViewPatOrigin
- | ScOrigin
- | DerivOrigin
- | DerivOriginDC DataCon Int
- | DerivOriginCoerce Id Type Type
- | StandAloneDerivOrigin
- | DefaultOrigin
- | DoOrigin
- | MCompOrigin
- | IfOrigin
- | ProcOrigin
- | AnnOrigin
- | FunDepOrigin
- | HoleOrigin
- | UnboundOccurrenceOf RdrName
- | ListOrigin
- pushErrCtxt :: CtOrigin -> ErrCtxt -> CtLoc -> CtLoc
- pushErrCtxtSameOrigin :: ErrCtxt -> CtLoc -> CtLoc
- data SkolemInfo
- data CtEvidence
- mkGivenLoc :: SkolemInfo -> TcLclEnv -> CtLoc
- isWanted :: CtEvidence -> Bool
- isGiven :: CtEvidence -> Bool
- isDerived :: CtEvidence -> Bool
- canRewrite :: CtEvidence -> CtEvidence -> Bool
- canRewriteOrSame :: CtEvidence -> CtEvidence -> Bool
- pprEvVarTheta :: [EvVar] -> SDoc
- pprWantedsWithLocs :: WantedConstraints -> SDoc
- pprEvVars :: [EvVar] -> SDoc
- pprEvVarWithType :: EvVar -> SDoc
- pprArising :: CtOrigin -> SDoc
- pprArisingAt :: CtLoc -> SDoc
- type TcId = Id
- type TcIdSet = IdSet
- data TcTyVarBind = TcTyVarBind TcTyVar TcType
- type TcTyVarBinds = Bag TcTyVarBind
Documentation
Quasi (IOEnv (Env TcGblEnv TcLclEnv)) | |
MonadUnique (IOEnv (Env gbl lcl)) | |
MonadThings (IOEnv (Env TcGblEnv TcLclEnv)) | |
ContainsModule gbl => ContainsModule (Env gbl lcl) | |
ContainsDynFlags (Env gbl lcl) |
TcGblEnv | |
|
TcLclEnv | |
|
data ImportAvailsSource
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
ImportAvails | |
|
plusImportAvails :: ImportAvails -> ImportAvails -> ImportAvailsSource
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.
data PromotionErrSource
data PendingStuffSource
newArrowScope :: TcM a -> TcM aSource
escapeArrowScope :: TcM a -> TcM aSource
andManyCts :: [Cts] -> CtsSource
extendCtsList :: Cts -> [Ct] -> CtsSource
isEmptyCts :: Cts -> BoolSource
isCTyEqCan :: Ct -> BoolSource
isCFunEqCan :: Ct -> BoolSource
isCDictCan_Maybe :: Ct -> Maybe ClassSource
isCIrredEvCan :: Ct -> BoolSource
isCNonCanonical :: Ct -> BoolSource
isWantedCt :: Ct -> BoolSource
isDerivedCt :: Ct -> BoolSource
ctEvidence :: Ct -> CtEvidenceSource
mkNonCanonical :: CtEvidence -> CtSource
mkNonCanonicalCt :: Ct -> CtSource
ctEvTerm :: CtEvidence -> EvTermSource
ctEvId :: CtEvidence -> TcIdSource
ctEvCheckDepth :: SubGoalDepth -> CtEvidence -> BoolSource
Checks whether the evidence can be used to solve a goal with the given minimum depth
mkFlatWC :: [Ct] -> WantedConstraintsSource
data ImplicationSource
CtLoc | |
|
ctLocOrigin :: CtLoc -> CtOriginSource
bumpCtLocDepth :: SubGoalCounter -> CtLoc -> CtLocSource
setCtLocOrigin :: CtLoc -> CtOrigin -> CtLocSource
setCtLocEnv :: CtLoc -> TcLclEnv -> CtLocSource
pushErrCtxtSameOrigin :: ErrCtxt -> CtLoc -> CtLocSource
data SkolemInfoSource
mkGivenLoc :: SkolemInfo -> TcLclEnv -> CtLocSource
isWanted :: CtEvidence -> BoolSource
isGiven :: CtEvidence -> BoolSource
isDerived :: CtEvidence -> BoolSource
canRewrite :: CtEvidence -> CtEvidence -> BoolSource
canRewriteOrSame :: CtEvidence -> CtEvidence -> BoolSource
pprEvVarTheta :: [EvVar] -> SDocSource
pprEvVarWithType :: EvVar -> SDocSource
pprArising :: CtOrigin -> SDocSource
pprArisingAt :: CtLoc -> SDocSource
type TcTyVarBinds = Bag TcTyVarBindSource