Safe Haskell | None |
---|---|
Language | Haskell2010 |
TcRnTypes
Synopsis
- 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_semantic_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_gres :: TcRef [GlobalRdrElt]
- tcg_keep :: TcRef NameSet
- tcg_th_used :: TcRef Bool
- tcg_th_splice_used :: TcRef Bool
- tcg_th_top_level_locs :: TcRef (Set RealSrcSpan)
- tcg_dfun_n :: TcRef OccSet
- tcg_merged :: [(Module, Fingerprint)]
- tcg_rn_exports :: Maybe [(Located (IE GhcRn), Avails)]
- tcg_rn_imports :: [LImportDecl GhcRn]
- tcg_rn_decls :: Maybe (HsGroup GhcRn)
- tcg_dependent_files :: TcRef [FilePath]
- tcg_th_topdecls :: TcRef [LHsDecl GhcPs]
- tcg_th_foreign_files :: TcRef [(ForeignSrcLang, FilePath)]
- tcg_th_topnames :: TcRef NameSet
- tcg_th_modfinalizers :: TcRef [(TcLclEnv, ThModFinalizers)]
- tcg_th_coreplugins :: TcRef [String]
- tcg_th_state :: TcRef (Map TypeRep Dynamic)
- tcg_th_remote_state :: TcRef (Maybe (ForeignRef (IORef QState)))
- tcg_ev_binds :: Bag EvBind
- tcg_tr_module :: Maybe Id
- tcg_binds :: LHsBinds GhcTc
- 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 GhcTc]
- tcg_fords :: [LForeignDecl GhcTc]
- tcg_patsyns :: [PatSyn]
- tcg_doc_hdr :: Maybe LHsDocString
- tcg_hpc :: !AnyHpcUsage
- tcg_self_boot :: SelfBootInfo
- tcg_main :: Maybe Name
- tcg_safeInfer :: TcRef (Bool, WarningMessages)
- tcg_tc_plugins :: [TcPluginSolver]
- tcg_top_loc :: RealSrcSpan
- tcg_static_wc :: TcRef WantedConstraints
- tcg_complete_matches :: [CompleteMatch]
- tcg_cc_st :: TcRef CostCentreState
- 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 :: TcBinderStack
- tcl_tyvars :: TcRef TcTyVarSet
- tcl_lie :: TcRef WantedConstraints
- tcl_errs :: TcRef Messages
- data IfGblEnv = IfGblEnv {}
- data IfLclEnv = IfLclEnv {}
- tcVisibleOrphanMods :: TcGblEnv -> ModuleSet
- data FrontendResult = FrontendTypecheck TcGblEnv
- type ErrCtxt = (Bool, TidyEnv -> TcM (TidyEnv, MsgDoc))
- type RecFieldEnv = NameEnv [FieldLabel]
- data ImportAvails = ImportAvails {}
- emptyImportAvails :: ImportAvails
- plusImportAvails :: ImportAvails -> ImportAvails -> ImportAvails
- data WhereFrom
- mkModDeps :: [(ModuleName, IsBootInterface)] -> ModuleNameEnv (ModuleName, IsBootInterface)
- modDepsElts :: ModuleNameEnv (ModuleName, IsBootInterface) -> [(ModuleName, IsBootInterface)]
- type TcTypeEnv = NameEnv TcTyThing
- type TcBinderStack = [TcBinder]
- data TcBinder
- data TcTyThing
- = AGlobal TyThing
- | ATcId {
- tct_id :: TcId
- tct_info :: IdBindingInfo
- | ATyVar Name TcTyVar
- | ATcTyCon TyCon
- | APromotionErr PromotionErr
- data PromotionErr
- data IdBindingInfo
- type ClosedTypeId = Bool
- type RhsNames = NameSet
- data IsGroupClosed = IsGroupClosed (NameEnv RhsNames) ClosedTypeId
- data SelfBootInfo
- = NoSelfBoot
- | SelfBoot {
- sb_mds :: ModDetails
- sb_tcs :: NameSet
- pprTcTyThingCategory :: TcTyThing -> SDoc
- pprPECategory :: PromotionErr -> SDoc
- data CompleteMatch = CompleteMatch {}
- type DsM = TcRnIf DsGblEnv DsLclEnv
- data DsLclEnv = DsLclEnv {}
- data DsGblEnv = DsGblEnv {}
- type DsMetaEnv = NameEnv DsMetaVal
- data DsMetaVal
- type CompleteMatchMap = UniqFM [CompleteMatch]
- mkCompleteMatchMap :: [CompleteMatch] -> CompleteMatchMap
- extendCompleteMatchMap :: CompleteMatchMap -> [CompleteMatch] -> CompleteMatchMap
- data ThStage
- = Splice SpliceType
- | RunSplice (TcRef [ForeignRef (Q ())])
- | Comp
- | Brack ThStage PendingStuff
- data SpliceType
- data PendingStuff
- topStage :: ThStage
- topAnnStage :: ThStage
- topSpliceStage :: ThStage
- type ThLevel = Int
- impLevel :: ThLevel
- outerLevel :: ThLevel
- thLevel :: ThStage -> ThLevel
- data ForeignSrcLang
- data ArrowCtxt
- type TcSigFun = Name -> Maybe TcSigInfo
- data TcSigInfo
- data TcIdSigInfo
- = CompleteSig { }
- | PartialSig { }
- data TcIdSigInst = TISI {
- sig_inst_sig :: TcIdSigInfo
- sig_inst_skols :: [(Name, TcTyVar)]
- sig_inst_theta :: TcThetaType
- sig_inst_tau :: TcSigmaType
- sig_inst_wcs :: [(Name, TcTyVar)]
- sig_inst_wcx :: Maybe TcType
- data TcPatSynInfo = TPSI {}
- isPartialSig :: TcIdSigInst -> Bool
- hasCompleteSig :: TcSigFun -> Name -> Bool
- data QCInst = QCI {
- qci_ev :: CtEvidence
- qci_tvs :: [TcTyVar]
- qci_pred :: TcPredType
- qci_pend_sc :: Bool
- isPendingScInst :: QCInst -> Maybe QCInst
- type Xi = Type
- data Ct
- = CDictCan {
- cc_ev :: CtEvidence
- cc_class :: Class
- cc_tyargs :: [Xi]
- cc_pend_sc :: Bool
- | CIrredCan {
- cc_ev :: CtEvidence
- cc_insol :: Bool
- | CTyEqCan { }
- | CFunEqCan { }
- | CNonCanonical {
- cc_ev :: CtEvidence
- | CHoleCan {
- cc_ev :: CtEvidence
- cc_hole :: Hole
- | CQuantCan QCInst
- = CDictCan {
- 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
- isPendingScDict :: Ct -> Maybe Ct
- superClassesMightHelp :: WantedConstraints -> Bool
- getPendingWantedScs :: Cts -> ([Ct], Cts)
- isCDictCan_Maybe :: Ct -> Maybe Class
- isCFunEqCan_maybe :: Ct -> Maybe (TyCon, [Type])
- isCNonCanonical :: Ct -> Bool
- isWantedCt :: Ct -> Bool
- isDerivedCt :: Ct -> Bool
- isGivenCt :: Ct -> Bool
- isHoleCt :: Ct -> Bool
- isOutOfScopeCt :: Ct -> Bool
- isExprHoleCt :: Ct -> Bool
- isTypeHoleCt :: Ct -> Bool
- isUserTypeErrorCt :: Ct -> Bool
- getUserTypeErrorMsg :: Ct -> Maybe Type
- ctEvidence :: Ct -> CtEvidence
- ctLoc :: Ct -> CtLoc
- setCtLoc :: Ct -> CtLoc -> Ct
- ctPred :: Ct -> PredType
- ctFlavour :: Ct -> CtFlavour
- ctEqRel :: Ct -> EqRel
- ctOrigin :: Ct -> CtOrigin
- ctEvId :: Ct -> EvVar
- mkTcEqPredLikeEv :: CtEvidence -> TcType -> TcType -> TcType
- mkNonCanonical :: CtEvidence -> Ct
- mkNonCanonicalCt :: Ct -> Ct
- mkGivens :: CtLoc -> [EvId] -> [Ct]
- mkIrredCt :: CtEvidence -> Ct
- mkInsolubleCt :: CtEvidence -> Ct
- ctEvPred :: CtEvidence -> TcPredType
- ctEvLoc :: CtEvidence -> CtLoc
- ctEvOrigin :: CtEvidence -> CtOrigin
- ctEvEqRel :: CtEvidence -> EqRel
- ctEvExpr :: CtEvidence -> EvExpr
- ctEvTerm :: CtEvidence -> EvTerm
- ctEvCoercion :: HasDebugCallStack => CtEvidence -> Coercion
- ctEvEvId :: CtEvidence -> EvVar
- tyCoVarsOfCt :: Ct -> TcTyCoVarSet
- tyCoVarsOfCts :: Cts -> TcTyCoVarSet
- tyCoVarsOfCtList :: Ct -> [TcTyCoVar]
- tyCoVarsOfCtsList :: Cts -> [TcTyCoVar]
- data WantedConstraints = WC {
- wc_simple :: Cts
- wc_impl :: Bag Implication
- insolubleWC :: WantedConstraints -> Bool
- emptyWC :: WantedConstraints
- isEmptyWC :: WantedConstraints -> Bool
- isSolvedWC :: WantedConstraints -> Bool
- andWC :: WantedConstraints -> WantedConstraints -> WantedConstraints
- unionsWC :: [WantedConstraints] -> WantedConstraints
- mkSimpleWC :: [CtEvidence] -> WantedConstraints
- mkImplicWC :: Bag Implication -> WantedConstraints
- addInsols :: WantedConstraints -> Bag Ct -> WantedConstraints
- insolublesOnly :: WantedConstraints -> WantedConstraints
- addSimples :: WantedConstraints -> Bag Ct -> WantedConstraints
- addImplics :: WantedConstraints -> Bag Implication -> WantedConstraints
- tyCoVarsOfWC :: WantedConstraints -> TyCoVarSet
- dropDerivedWC :: WantedConstraints -> WantedConstraints
- dropDerivedSimples :: Cts -> Cts
- tyCoVarsOfWCList :: WantedConstraints -> [TyCoVar]
- insolubleCt :: Ct -> Bool
- insolubleEqCt :: Ct -> Bool
- isDroppableCt :: Ct -> Bool
- insolubleImplic :: Implication -> Bool
- arisesFromGivens :: Ct -> Bool
- data Implication = Implic {}
- newImplication :: TcM Implication
- implicationPrototype :: Implication
- implicLclEnv :: Implication -> TcLclEnv
- implicDynFlags :: Implication -> DynFlags
- data ImplicStatus
- = IC_Solved { }
- | IC_Insoluble
- | IC_BadTelescope
- | IC_Unsolved
- isInsolubleStatus :: ImplicStatus -> Bool
- isSolvedStatus :: ImplicStatus -> Bool
- data SubGoalDepth
- initialSubGoalDepth :: SubGoalDepth
- maxSubGoalDepth :: SubGoalDepth -> SubGoalDepth -> SubGoalDepth
- bumpSubGoalDepth :: SubGoalDepth -> SubGoalDepth
- subGoalDepthExceeded :: DynFlags -> SubGoalDepth -> Bool
- data CtLoc = CtLoc {}
- ctLocSpan :: CtLoc -> RealSrcSpan
- ctLocEnv :: CtLoc -> TcLclEnv
- ctLocLevel :: CtLoc -> TcLevel
- ctLocOrigin :: CtLoc -> CtOrigin
- ctLocTypeOrKind_maybe :: CtLoc -> Maybe TypeOrKind
- ctLocDepth :: CtLoc -> SubGoalDepth
- bumpCtLocDepth :: CtLoc -> CtLoc
- isGivenLoc :: CtLoc -> Bool
- setCtLocOrigin :: CtLoc -> CtOrigin -> CtLoc
- updateCtLocOrigin :: CtLoc -> (CtOrigin -> CtOrigin) -> CtLoc
- setCtLocEnv :: CtLoc -> TcLclEnv -> CtLoc
- setCtLocSpan :: CtLoc -> RealSrcSpan -> CtLoc
- data CtOrigin
- = GivenOrigin SkolemInfo
- | OccurrenceOf Name
- | OccurrenceOfRecSel RdrName
- | AppOrigin
- | SpecPragOrigin UserTypeCtxt
- | TypeEqOrigin {
- uo_actual :: TcType
- uo_expected :: TcType
- uo_thing :: Maybe SDoc
- uo_visible :: Bool
- | KindEqOrigin TcType (Maybe TcType) CtOrigin (Maybe TypeOrKind)
- | IPOccOrigin HsIPName
- | OverLabelOrigin FastString
- | LiteralOrigin (HsOverLit GhcRn)
- | NegateOrigin
- | ArithSeqOrigin (ArithSeqInfo GhcRn)
- | AssocFamPatOrigin
- | SectionOrigin
- | TupleOrigin
- | ExprSigOrigin
- | PatSigOrigin
- | PatOrigin
- | ProvCtxtOrigin (PatSynBind GhcRn GhcRn)
- | RecordUpdOrigin
- | ViewPatOrigin
- | ScOrigin TypeSize
- | DerivClauseOrigin
- | DerivOriginDC DataCon Int Bool
- | DerivOriginCoerce Id Type Type Bool
- | StandAloneDerivOrigin
- | DefaultOrigin
- | DoOrigin
- | DoPatOrigin (LPat GhcRn)
- | MCompOrigin
- | MCompPatOrigin (LPat GhcRn)
- | IfOrigin
- | ProcOrigin
- | AnnOrigin
- | FunDepOrigin1 PredType CtLoc PredType CtLoc
- | FunDepOrigin2 PredType CtOrigin PredType SrcSpan
- | HoleOrigin
- | UnboundOccurrenceOf OccName
- | ListOrigin
- | StaticOrigin
- | FailablePattern (LPat GhcTcId)
- | Shouldn'tHappenOrigin String
- | InstProvidedOrigin Module ClsInst
- exprCtOrigin :: HsExpr GhcRn -> CtOrigin
- lexprCtOrigin :: LHsExpr GhcRn -> CtOrigin
- matchesCtOrigin :: MatchGroup GhcRn (LHsExpr GhcRn) -> CtOrigin
- grhssCtOrigin :: GRHSs GhcRn (LHsExpr GhcRn) -> CtOrigin
- isVisibleOrigin :: CtOrigin -> Bool
- toInvisibleOrigin :: CtOrigin -> CtOrigin
- data TypeOrKind
- isTypeLevel :: TypeOrKind -> Bool
- isKindLevel :: TypeOrKind -> Bool
- pprCtOrigin :: CtOrigin -> SDoc
- pprCtLoc :: CtLoc -> SDoc
- pushErrCtxt :: CtOrigin -> ErrCtxt -> CtLoc -> CtLoc
- pushErrCtxtSameOrigin :: ErrCtxt -> CtLoc -> CtLoc
- data SkolemInfo
- = SigSkol UserTypeCtxt TcType [(Name, TcTyVar)]
- | SigTypeSkol UserTypeCtxt
- | ForAllSkol SDoc
- | DerivSkol Type
- | InstSkol
- | InstSC TypeSize
- | FamInstSkol
- | PatSkol ConLike (HsMatchContext Name)
- | ArrowSkol
- | IPSkol [HsIPName]
- | RuleSkol RuleName
- | InferSkol [(Name, TcType)]
- | BracketSkol
- | UnifyForAllSkol TcType
- | TyConSkol TyConFlavour Name
- | DataConSkol Name
- | ReifySkol
- | QuantCtxtSkol
- | UnkSkol
- pprSigSkolInfo :: UserTypeCtxt -> TcType -> SDoc
- pprSkolInfo :: SkolemInfo -> SDoc
- data CtEvidence
- data TcEvDest
- mkKindLoc :: TcType -> TcType -> CtLoc -> CtLoc
- toKindLoc :: CtLoc -> CtLoc
- mkGivenLoc :: TcLevel -> SkolemInfo -> TcLclEnv -> CtLoc
- isWanted :: CtEvidence -> Bool
- isGiven :: CtEvidence -> Bool
- isDerived :: CtEvidence -> Bool
- isGivenOrWDeriv :: CtFlavour -> Bool
- ctEvRole :: CtEvidence -> Role
- wrapType :: Type -> [TyVar] -> [PredType] -> Type
- wrapTypeWithImplication :: Type -> Implication -> Type
- removeBindingShadowing :: HasOccName a => [a] -> [a]
- 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 -> EvBindsVar -> TcM a
- unsafeTcPluginTcM :: TcM a -> TcPluginM a
- getEvBindsTcPluginM :: TcPluginM EvBindsVar
- data CtFlavour
- = Given
- | Wanted ShadowInfo
- | Derived
- data ShadowInfo
- ctEvFlavour :: CtEvidence -> CtFlavour
- type CtFlavourRole = (CtFlavour, EqRel)
- ctEvFlavourRole :: CtEvidence -> CtFlavourRole
- ctFlavourRole :: Ct -> CtFlavourRole
- eqCanRewrite :: EqRel -> EqRel -> Bool
- eqCanRewriteFR :: CtFlavourRole -> CtFlavourRole -> Bool
- eqMayRewriteFR :: CtFlavourRole -> CtFlavourRole -> Bool
- eqCanDischargeFR :: CtFlavourRole -> CtFlavourRole -> Bool
- funEqCanDischarge :: CtEvidence -> CtEvidence -> (SwapFlag, Bool)
- funEqCanDischargeF :: CtFlavour -> CtFlavour -> (SwapFlag, Bool)
- pprEvVarTheta :: [EvVar] -> SDoc
- pprEvVars :: [EvVar] -> SDoc
- pprEvVarWithType :: EvVar -> SDoc
- type TcId = Id
- type TcIdSet = IdSet
- data Hole
- holeOcc :: Hole -> OccName
- data NameShape = NameShape {
- ns_mod_name :: ModuleName
- ns_exports :: [AvailInfo]
- ns_map :: OccEnv Name
- type RoleAnnotEnv = NameEnv (LRoleAnnotDecl GhcRn)
- emptyRoleAnnotEnv :: RoleAnnotEnv
- mkRoleAnnotEnv :: [LRoleAnnotDecl GhcRn] -> RoleAnnotEnv
- lookupRoleAnnot :: RoleAnnotEnv -> Name -> Maybe (LRoleAnnotDecl GhcRn)
- getRoleAnnots :: [Name] -> RoleAnnotEnv -> ([LRoleAnnotDecl GhcRn], RoleAnnotEnv)
Documentation
Constructors
Env | |
Instances
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
Constructors
TcLclEnv | |
Fields
|
Instances
data FrontendResult #
FrontendResult
describes the result of running the
frontend of a Haskell module. Usually, you'll get
a FrontendTypecheck
, since running the frontend involves
typechecking a program, but for an hs-boot merge you'll
just get a ModIface, since no actual typechecking occurred.
This data type really should be in HscTypes, but it needs to have a TcGblEnv which is only defined here.
Constructors
FrontendTypecheck TcGblEnv |
type RecFieldEnv = NameEnv [FieldLabel] #
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.
Constructors
ImportByUser IsBootInterface | |
ImportBySystem | |
ImportByPlugin |
mkModDeps :: [(ModuleName, IsBootInterface)] -> ModuleNameEnv (ModuleName, IsBootInterface) #
modDepsElts :: ModuleNameEnv (ModuleName, IsBootInterface) -> [(ModuleName, IsBootInterface)] #
type TcBinderStack = [TcBinder] #
Constructors
TcIdBndr TcId TopLevelFlag | |
TcIdBndr_ExpType Name ExpType TopLevelFlag | |
TcTvBndr Name TyVar |
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 |
data PromotionErr #
Constructors
TyConPE | |
ClassPE | |
FamDataConPE | |
ConstrainedDataConPE PredType | |
PatSynPE | |
PatSynExPE | |
RecDataConPE | |
NoDataKindsTC | |
NoDataKindsDC |
Instances
Outputable PromotionErr # | |
Defined in TcRnTypes |
data IdBindingInfo #
IdBindingInfo describes how an Id is bound.
It is used for the following purposes: a) for static forms in TcExpr.checkClosedInStaticForm and b) to figure out when a nested binding can be generalised, in TcBinds.decideGeneralisationPlan.
Constructors
NotLetBound | |
ClosedLet | |
NonClosedLet RhsNames ClosedTypeId |
Instances
Outputable IdBindingInfo # | |
Defined in TcRnTypes |
type ClosedTypeId = Bool #
data IsGroupClosed #
IsGroupClosed describes a group of mutually-recursive bindings
Constructors
IsGroupClosed (NameEnv RhsNames) ClosedTypeId |
data SelfBootInfo #
Constructors
NoSelfBoot | |
SelfBoot | |
Fields
|
pprTcTyThingCategory :: TcTyThing -> SDoc #
pprPECategory :: PromotionErr -> SDoc #
data CompleteMatch #
A list of conlikes which represents a complete pattern match.
These arise from COMPLETE
signatures.
Constructors
CompleteMatch | |
Fields
|
Instances
Outputable CompleteMatch # | |
Defined in HscTypes |
Constructors
DsGblEnv | |
Fields |
Instances
ContainsModule DsGblEnv # | |
Defined in TcRnTypes Methods extractModule :: DsGblEnv -> Module # | |
ContainsCostCentreState DsGblEnv # | |
Defined in TcRnMonad Methods extractCostCentreState :: DsGblEnv -> TcRef CostCentreState # | |
MonadThings (IOEnv (Env DsGblEnv DsLclEnv)) # | |
type CompleteMatchMap = UniqFM [CompleteMatch] #
A map keyed by the completeMatchTyCon
.
Constructors
Splice SpliceType | |
RunSplice (TcRef [ForeignRef (Q ())]) | |
Comp | |
Brack ThStage PendingStuff |
data SpliceType #
data PendingStuff #
Constructors
RnPendingUntyped (TcRef [PendingRnSplice]) | |
RnPendingTyped | |
TcPending (TcRef [PendingTcSplice]) (TcRef WantedConstraints) |
topAnnStage :: ThStage #
outerLevel :: ThLevel #
data ForeignSrcLang Source #
Foreign formats supported by GHC via TH
Constructors
LangC | C |
LangCxx | C++ |
LangObjc | Objective C |
LangObjcxx | Objective C++ |
LangAsm | Assembly language (.s) |
RawObject | Object (.o) |
Instances
Eq ForeignSrcLang | |
Defined in GHC.ForeignSrcLang.Type Methods (==) :: ForeignSrcLang -> ForeignSrcLang -> Bool # (/=) :: ForeignSrcLang -> ForeignSrcLang -> Bool # | |
Show ForeignSrcLang | |
Defined in GHC.ForeignSrcLang.Type | |
Generic ForeignSrcLang | |
Defined in GHC.ForeignSrcLang.Type Methods from :: ForeignSrcLang -> Rep ForeignSrcLang x Source # to :: Rep ForeignSrcLang x -> ForeignSrcLang Source # | |
type Rep ForeignSrcLang | |
Defined in GHC.ForeignSrcLang.Type type Rep ForeignSrcLang = D1 ('MetaData "ForeignSrcLang" "GHC.ForeignSrcLang.Type" "ghc-boot-th-8.8.4" 'False) ((C1 ('MetaCons "LangC" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LangCxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "LangObjc" 'PrefixI 'False) (U1 :: Type -> Type))) :+: (C1 ('MetaCons "LangObjcxx" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "LangAsm" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RawObject" 'PrefixI 'False) (U1 :: Type -> Type)))) |
Constructors
NoArrowCtxt | |
ArrowCtxt LocalRdrEnv (TcRef WantedConstraints) |
Constructors
TcIdSig TcIdSigInfo | |
TcPatSynSig TcPatSynInfo |
data TcIdSigInfo #
Constructors
CompleteSig | |
PartialSig | |
Fields
|
Instances
Outputable TcIdSigInfo # | |
Defined in TcRnTypes |
data TcIdSigInst #
Constructors
TISI | |
Fields
|
Instances
Outputable TcIdSigInst # | |
Defined in TcRnTypes |
data TcPatSynInfo #
Constructors
TPSI | |
Fields
|
Instances
Outputable TcPatSynInfo # | |
Defined in TcRnTypes |
isPartialSig :: TcIdSigInst -> Bool #
hasCompleteSig :: TcSigFun -> Name -> Bool #
No signature or a partial signature
Constructors
QCI | |
Fields
|
isPendingScInst :: QCInst -> Maybe QCInst #
Constructors
CDictCan | |
Fields
| |
CIrredCan | |
Fields
| |
CTyEqCan | |
CFunEqCan | |
CNonCanonical | |
Fields
| |
CHoleCan | |
Fields
| |
CQuantCan QCInst |
andManyCts :: [Cts] -> Cts #
extendCtsList :: Cts -> [Ct] -> Cts #
isEmptyCts :: Cts -> Bool #
isCTyEqCan :: Ct -> Bool #
isCFunEqCan :: Ct -> Bool #
isPendingScDict :: Ct -> Maybe Ct #
superClassesMightHelp :: WantedConstraints -> Bool #
True if taking superclasses of givens, or of wanteds (to perhaps expose more equalities or functional dependencies) might help to solve this constraint. See Note [When superclasses help]
getPendingWantedScs :: Cts -> ([Ct], Cts) #
isCDictCan_Maybe :: Ct -> Maybe Class #
isCNonCanonical :: Ct -> Bool #
isWantedCt :: Ct -> Bool #
isDerivedCt :: Ct -> Bool #
isOutOfScopeCt :: Ct -> Bool #
isExprHoleCt :: Ct -> Bool #
isTypeHoleCt :: Ct -> Bool #
isUserTypeErrorCt :: Ct -> Bool #
getUserTypeErrorMsg :: Ct -> Maybe Type #
A constraint is considered to be a custom type error, if it contains custom type errors anywhere in it. See Note [Custom type errors in constraints]
ctEvidence :: Ct -> CtEvidence #
mkTcEqPredLikeEv :: CtEvidence -> TcType -> TcType -> TcType #
Makes a new equality predicate with the same role as the given evidence.
mkNonCanonical :: CtEvidence -> Ct #
mkNonCanonicalCt :: Ct -> Ct #
mkIrredCt :: CtEvidence -> Ct #
mkInsolubleCt :: CtEvidence -> Ct #
ctEvPred :: CtEvidence -> TcPredType #
ctEvLoc :: CtEvidence -> CtLoc #
ctEvOrigin :: CtEvidence -> CtOrigin #
ctEvEqRel :: CtEvidence -> EqRel #
Get the equality relation relevant for a CtEvidence
ctEvExpr :: CtEvidence -> EvExpr #
ctEvTerm :: CtEvidence -> EvTerm #
ctEvCoercion :: HasDebugCallStack => CtEvidence -> Coercion #
ctEvEvId :: CtEvidence -> EvVar #
tyCoVarsOfCt :: Ct -> TcTyCoVarSet #
Returns free variables of constraints as a non-deterministic set
tyCoVarsOfCts :: Cts -> TcTyCoVarSet #
Returns free variables of a bag of constraints as a non-deterministic set. See Note [Deterministic FV] in FV.
tyCoVarsOfCtList :: Ct -> [TcTyCoVar] #
Returns free variables of constraints as a deterministically ordered. list. See Note [Deterministic FV] in FV.
tyCoVarsOfCtsList :: Cts -> [TcTyCoVar] #
Returns free variables of a bag of constraints as a deterministically odered list. See Note [Deterministic FV] in FV.
data WantedConstraints #
Instances
Outputable WantedConstraints # | |
Defined in TcRnTypes |
insolubleWC :: WantedConstraints -> Bool #
isEmptyWC :: WantedConstraints -> Bool #
isSolvedWC :: WantedConstraints -> Bool #
Checks whether a the given wanted constraints are solved, i.e. that there are no simple constraints left and all the implications are solved.
unionsWC :: [WantedConstraints] -> WantedConstraints #
mkSimpleWC :: [CtEvidence] -> WantedConstraints #
addInsols :: WantedConstraints -> Bag Ct -> WantedConstraints #
addSimples :: WantedConstraints -> Bag Ct -> WantedConstraints #
tyCoVarsOfWC :: WantedConstraints -> TyCoVarSet #
Returns free variables of WantedConstraints as a non-deterministic set. See Note [Deterministic FV] in FV.
dropDerivedSimples :: Cts -> Cts #
tyCoVarsOfWCList :: WantedConstraints -> [TyCoVar] #
Returns free variables of WantedConstraints as a deterministically ordered list. See Note [Deterministic FV] in FV.
insolubleCt :: Ct -> Bool #
insolubleEqCt :: Ct -> Bool #
isDroppableCt :: Ct -> Bool #
insolubleImplic :: Implication -> Bool #
arisesFromGivens :: Ct -> Bool #
data Implication #
Constructors
Implic | |
Fields
|
Instances
Outputable Implication # | |
Defined in TcRnTypes |
newImplication :: TcM Implication #
Create a new Implication
with as many sensible defaults for its fields
as possible. Note that the ic_tclvl
, ic_binds
, and ic_info
fields do
not have sensible defaults, so they are initialized with lazy thunks that
will panic
if forced, so one should take care to initialize these fields
after creation.
This is monadic purely to look up the Env
, which is used to initialize
ic_env
.
implicLclEnv :: Implication -> TcLclEnv #
Retrieve the enclosed TcLclEnv
from an Implication
.
implicDynFlags :: Implication -> DynFlags #
Retrieve the enclosed DynFlags
from an Implication
.
data ImplicStatus #
Constructors
IC_Solved | |
IC_Insoluble | |
IC_BadTelescope | |
IC_Unsolved |
Instances
Outputable ImplicStatus # | |
Defined in TcRnTypes |
isInsolubleStatus :: ImplicStatus -> Bool #
isSolvedStatus :: ImplicStatus -> Bool #
data SubGoalDepth #
See Note [SubGoalDepth]
Instances
Eq SubGoalDepth # | |
Defined in TcRnTypes | |
Ord SubGoalDepth # | |
Defined in TcRnTypes Methods compare :: SubGoalDepth -> SubGoalDepth -> Ordering # (<) :: SubGoalDepth -> SubGoalDepth -> Bool # (<=) :: SubGoalDepth -> SubGoalDepth -> Bool # (>) :: SubGoalDepth -> SubGoalDepth -> Bool # (>=) :: SubGoalDepth -> SubGoalDepth -> Bool # max :: SubGoalDepth -> SubGoalDepth -> SubGoalDepth # min :: SubGoalDepth -> SubGoalDepth -> SubGoalDepth # | |
Outputable SubGoalDepth # | |
Defined in TcRnTypes |
maxSubGoalDepth :: SubGoalDepth -> SubGoalDepth -> SubGoalDepth #
subGoalDepthExceeded :: DynFlags -> SubGoalDepth -> Bool #
Constructors
CtLoc | |
Fields
|
ctLocSpan :: CtLoc -> RealSrcSpan #
ctLocLevel :: CtLoc -> TcLevel #
ctLocOrigin :: CtLoc -> CtOrigin #
ctLocDepth :: CtLoc -> SubGoalDepth #
bumpCtLocDepth :: CtLoc -> CtLoc #
isGivenLoc :: CtLoc -> Bool #
setCtLocOrigin :: CtLoc -> CtOrigin -> CtLoc #
setCtLocEnv :: CtLoc -> TcLclEnv -> CtLoc #
setCtLocSpan :: CtLoc -> RealSrcSpan -> CtLoc #
Constructors
exprCtOrigin :: HsExpr GhcRn -> CtOrigin #
lexprCtOrigin :: LHsExpr GhcRn -> CtOrigin #
Extract a suitable CtOrigin from a HsExpr
matchesCtOrigin :: MatchGroup GhcRn (LHsExpr GhcRn) -> CtOrigin #
Extract a suitable CtOrigin from a MatchGroup
grhssCtOrigin :: GRHSs GhcRn (LHsExpr GhcRn) -> CtOrigin #
Extract a suitable CtOrigin from guarded RHSs
isVisibleOrigin :: CtOrigin -> Bool #
toInvisibleOrigin :: CtOrigin -> CtOrigin #
data TypeOrKind #
Flag to see whether we're type-checking terms or kind-checking types
Instances
Eq TypeOrKind # | |
Defined in TcRnTypes | |
Outputable TypeOrKind # | |
Defined in TcRnTypes |
isTypeLevel :: TypeOrKind -> Bool #
isKindLevel :: TypeOrKind -> Bool #
pprCtOrigin :: CtOrigin -> SDoc #
pushErrCtxtSameOrigin :: ErrCtxt -> CtLoc -> CtLoc #
data SkolemInfo #
Constructors
Instances
Outputable SkolemInfo # | |
Defined in TcRnTypes |
pprSigSkolInfo :: UserTypeCtxt -> TcType -> SDoc #
pprSkolInfo :: SkolemInfo -> SDoc #
data CtEvidence #
Constructors
CtGiven | |
CtWanted | |
Fields
| |
CtDerived | |
Fields
|
Instances
Outputable CtEvidence # | |
Defined in TcRnTypes |
A place for type-checking evidence to go after it is generated. Wanted equalities are always HoleDest; other wanteds are always EvVarDest.
Constructors
EvVarDest EvVar | bind this var to the evidence EvVarDest is always used for non-type-equalities e.g. class constraints |
HoleDest CoercionHole | fill in this hole with the evidence HoleDest is always used for type-equalities See Note [Coercion holes] in TyCoRep |
mkGivenLoc :: TcLevel -> SkolemInfo -> TcLclEnv -> CtLoc #
isWanted :: CtEvidence -> Bool #
isGiven :: CtEvidence -> Bool #
isDerived :: CtEvidence -> Bool #
isGivenOrWDeriv :: CtFlavour -> Bool #
ctEvRole :: CtEvidence -> Role #
Get the role relevant for a CtEvidence
wrapTypeWithImplication :: Type -> Implication -> Type #
Wraps the given type with the constraints (via ic_given) in the given implication, according to the variables mentioned (via ic_skols) in the implication, but taking care to only wrap those variables that are mentioned in the type or the implication.
removeBindingShadowing :: HasOccName a => [a] -> [a] #
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 insoluble. |
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 -> EvBindsVar -> TcM a #
unsafeTcPluginTcM :: TcM a -> TcPluginM a #
getEvBindsTcPluginM :: TcPluginM EvBindsVar #
Access the EvBindsVar
carried by the TcPluginM
during
constraint solving. Returns Nothing
if invoked during
tcPluginInit
or tcPluginStop
.
Constructors
Given | |
Wanted ShadowInfo | |
Derived |
data ShadowInfo #
Instances
Eq ShadowInfo # | |
Defined in TcRnTypes |
ctEvFlavour :: CtEvidence -> CtFlavour #
type CtFlavourRole = (CtFlavour, EqRel) #
Whether or not one Ct
can rewrite another is determined by its
flavour and its equality relation. See also
Note [Flavours with roles] in TcSMonad
ctEvFlavourRole :: CtEvidence -> CtFlavourRole #
Extract the flavour, role, and boxity from a CtEvidence
ctFlavourRole :: Ct -> CtFlavourRole #
Extract the flavour and role from a Ct
eqCanRewrite :: EqRel -> EqRel -> Bool #
eqCanRewriteFR :: CtFlavourRole -> CtFlavourRole -> Bool #
eqMayRewriteFR :: CtFlavourRole -> CtFlavourRole -> Bool #
eqCanDischargeFR :: CtFlavourRole -> CtFlavourRole -> Bool #
funEqCanDischarge :: CtEvidence -> CtEvidence -> (SwapFlag, Bool) #
pprEvVarTheta :: [EvVar] -> SDoc #
pprEvVarWithType :: EvVar -> SDoc #
An expression or type hole
Constructors
ExprHole UnboundVar | Either an out-of-scope variable or a "true" hole in an expression (TypedHoles) |
TypeHole OccName | A hole in a type (PartialTypeSignatures) |
A NameShape
is a substitution on Name
s that can be used
to refine the identities of a hole while we are renaming interfaces
(see RnModIface
). Specifically, a NameShape
for
ns_module_name
A
, defines a mapping from {A.T}
(for some OccName
T
) to some arbitrary other Name
.
The most intruiging thing about a NameShape
, however, is
how it's constructed. A NameShape
is *implied* by the
exported AvailInfo
s of the implementor of an interface:
if an implementor of signature H
exports M.T
, you implicitly
define a substitution from {H.T}
to M.T
. So a NameShape
is computed from the list of AvailInfo
s that are exported
by the implementation of a module, or successively merged
together by the export lists of signatures which are joining
together.
It's not the most obvious way to go about doing this, but it does seem to work!
NB: Can't boot this and put it in NameShape because then we start pulling in too many DynFlags things.
Constructors
NameShape | |
Fields
|
type RoleAnnotEnv = NameEnv (LRoleAnnotDecl GhcRn) #
mkRoleAnnotEnv :: [LRoleAnnotDecl GhcRn] -> RoleAnnotEnv #
lookupRoleAnnot :: RoleAnnotEnv -> Name -> Maybe (LRoleAnnotDecl GhcRn) #
getRoleAnnots :: [Name] -> RoleAnnotEnv -> ([LRoleAnnotDecl GhcRn], RoleAnnotEnv) #