Safe Haskell | None |
---|---|
Language | Haskell98 |
TcSMonad
- data WorkList = WorkList {}
- isEmptyWorkList :: WorkList -> Bool
- emptyWorkList :: WorkList
- workListFromEq :: Ct -> WorkList
- workListFromNonEq :: Ct -> WorkList
- workListFromCt :: Ct -> WorkList
- extendWorkListEq :: Ct -> WorkList -> WorkList
- extendWorkListFunEq :: Ct -> WorkList -> WorkList
- extendWorkListNonEq :: Ct -> WorkList -> WorkList
- extendWorkListCt :: Ct -> WorkList -> WorkList
- extendWorkListCts :: [Ct] -> WorkList -> WorkList
- extendWorkListEqs :: [Ct] -> WorkList -> WorkList
- appendWorkList :: WorkList -> WorkList -> WorkList
- selectWorkItem :: WorkList -> (Maybe Ct, WorkList)
- withWorkList :: Cts -> TcS () -> TcS (Bag Implication)
- workListSize :: WorkList -> Int
- updWorkListTcS :: (WorkList -> WorkList) -> TcS ()
- updWorkListTcS_return :: (WorkList -> (a, WorkList)) -> TcS a
- updTcSImplics :: (Bag Implication -> Bag Implication) -> TcS ()
- data Ct
- = CDictCan { }
- | CIrredEvCan {
- cc_ev :: CtEvidence
- | CTyEqCan { }
- | CFunEqCan { }
- | CNonCanonical {
- cc_ev :: CtEvidence
- | CHoleCan {
- cc_ev :: CtEvidence
- cc_occ :: OccName
- type Xi = Type
- tyVarsOfCt :: Ct -> TcTyVarSet
- tyVarsOfCts :: Cts -> TcTyVarSet
- emitInsoluble :: Ct -> TcS ()
- isWanted :: CtEvidence -> Bool
- isDerived :: CtEvidence -> Bool
- isGivenCt :: Ct -> Bool
- isWantedCt :: Ct -> Bool
- isDerivedCt :: Ct -> Bool
- canRewrite :: CtEvidence -> CtEvidence -> Bool
- mkGivenLoc :: SkolemInfo -> TcLclEnv -> CtLoc
- data TcS a
- runTcS :: TcS a -> TcM (a, Bag EvBind)
- runTcSWithEvBinds :: EvBindsVar -> TcS a -> TcM a
- failTcS :: SDoc -> TcS a
- panicTcS :: SDoc -> TcS a
- traceTcS :: String -> SDoc -> TcS ()
- traceFireTcS :: Ct -> SDoc -> TcS ()
- bumpStepCountTcS :: TcS ()
- tryTcS :: TcS a -> TcS a
- nestTcS :: TcS a -> TcS a
- nestImplicTcS :: EvBindsVar -> Untouchables -> InertSet -> TcS a -> TcS a
- recoverTcS :: TcS a -> TcS a -> TcS a
- wrapErrTcS :: TcM a -> TcS a
- wrapWarnTcS :: TcM a -> TcS a
- addSolvedDict :: CtEvidence -> Class -> [Type] -> TcS ()
- addSolvedFunEq :: TyCon -> [TcType] -> CtEvidence -> TcType -> TcS ()
- getGivenInfo :: TcS a -> TcS (Bool, [TcTyVar], a)
- addUsedRdrNamesTcS :: [RdrName] -> TcS ()
- deferTcSForAllEq :: Role -> CtLoc -> ([TyVar], TcType) -> ([TyVar], TcType) -> TcS EvTerm
- setEvBind :: EvVar -> EvTerm -> TcS ()
- data XEvTerm = XEvTerm {}
- data MaybeNew
- isFresh :: MaybeNew -> Bool
- freshGoal :: MaybeNew -> Maybe CtEvidence
- freshGoals :: [MaybeNew] -> [CtEvidence]
- getEvTerm :: MaybeNew -> EvTerm
- getEvTerms :: [MaybeNew] -> [EvTerm]
- xCtEvidence :: CtEvidence -> XEvTerm -> TcS [CtEvidence]
- rewriteEvidence :: CtEvidence -> TcPredType -> TcCoercion -> TcS (Maybe CtEvidence)
- rewriteEqEvidence :: CtEvidence -> SwapFlag -> TcType -> TcType -> TcCoercion -> TcCoercion -> TcS (Maybe CtEvidence)
- maybeSym :: SwapFlag -> TcCoercion -> TcCoercion
- newWantedEvVar :: CtLoc -> TcPredType -> TcS MaybeNew
- newWantedEvVarNC :: CtLoc -> TcPredType -> TcS CtEvidence
- newWantedEvVarNonrec :: CtLoc -> TcPredType -> TcS MaybeNew
- newDerived :: CtLoc -> TcPredType -> TcS (Maybe CtEvidence)
- instDFunConstraints :: CtLoc -> TcThetaType -> TcS [MaybeNew]
- setWantedTyBind :: TcTyVar -> TcType -> TcS ()
- reportUnifications :: TcS a -> TcS (Bool, a)
- getInstEnvs :: TcS (InstEnv, InstEnv)
- getFamInstEnvs :: TcS (FamInstEnv, FamInstEnv)
- getTopEnv :: TcS HscEnv
- getGblEnv :: TcS TcGblEnv
- getTcEvBinds :: TcS EvBindsVar
- getUntouchables :: TcS Untouchables
- getTcEvBindsMap :: TcS EvBindMap
- getTcSTyBindsMap :: TcS (TyVarEnv (TcTyVar, TcType))
- lookupFlatEqn :: TyCon -> [Type] -> TcS (Maybe (CtEvidence, TcType))
- newFlattenSkolem :: CtEvidence -> TcType -> TcS (CtEvidence, TcType)
- data Deque a = DQ [a] [a]
- insertDeque :: a -> Deque a -> Deque a
- emptyDeque :: Deque a
- data InertSet = IS {
- inert_cans :: InertCans
- inert_flat_cache :: FunEqMap (CtEvidence, TcType)
- inert_fsks :: [TcTyVar]
- inert_solved_funeqs :: FunEqMap (CtEvidence, TcType)
- inert_solved_dicts :: DictMap CtEvidence
- data InertCans = IC {
- inert_eqs :: TyVarEnv EqualCtList
- inert_funeqs :: FunEqMap EqualCtList
- inert_dicts :: DictMap Ct
- inert_irreds :: Cts
- inert_insols :: Cts
- inert_no_eqs :: !Bool
- getInertEqs :: TcS (TyVarEnv [Ct])
- emptyInert :: InertSet
- getTcSInerts :: TcS InertSet
- setTcSInerts :: InertSet -> TcS ()
- getInertUnsolved :: TcS (Cts, Cts)
- checkAllSolved :: TcS Bool
- prepareInertsForImplications :: InertSet -> InertSet
- addInertCan :: InertCans -> Ct -> InertCans
- insertInertItemTcS :: Ct -> TcS ()
- type EqualCtList = [Ct]
- lookupSolvedDict :: InertSet -> Class -> [Type] -> Maybe CtEvidence
- extendFlatCache :: TyCon -> [Type] -> CtEvidence -> TcType -> TcS ()
- findFunEq :: FunEqMap a -> TyCon -> [Type] -> Maybe a
- findTyEqs :: TyEqMap EqualCtList -> TyVar -> EqualCtList
- findDict :: DictMap a -> Class -> [Type] -> Maybe a
- findDictsByClass :: DictMap a -> Class -> Bag a
- addDict :: DictMap a -> Class -> [Type] -> a -> DictMap a
- addDictsByClass :: DictMap Ct -> Class -> Bag Ct -> DictMap Ct
- delDict :: DictMap a -> Class -> [Type] -> DictMap a
- partitionDicts :: (Ct -> Bool) -> DictMap Ct -> (Bag Ct, DictMap Ct)
- findFunEqsByTyCon :: FunEqMap [a] -> TyCon -> [a]
- findFunEqs :: FunEqMap [a] -> TyCon -> [Type] -> [a]
- addFunEq :: FunEqMap EqualCtList -> TyCon -> [Type] -> Ct -> FunEqMap EqualCtList
- replaceFunEqs :: FunEqMap EqualCtList -> TyCon -> [Type] -> Ct -> FunEqMap EqualCtList
- partitionFunEqs :: (Ct -> Bool) -> FunEqMap EqualCtList -> (Bag Ct, FunEqMap EqualCtList)
- instDFunType :: DFunId -> [DFunInstType] -> TcS ([TcType], TcType)
- newFlexiTcSTy :: Kind -> TcS TcType
- instFlexiTcS :: [TKVar] -> TcS (TvSubst, [TcType])
- instFlexiTcSHelperTcS :: Name -> Kind -> TcS TcType
- cloneMetaTyVar :: TcTyVar -> TcS TcTyVar
- data Untouchables
- isTouchableMetaTyVarTcS :: TcTyVar -> TcS Bool
- isFilledMetaTyVar_maybe :: TcTyVar -> TcS (Maybe Type)
- zonkTyVarsAndFV :: TcTyVarSet -> TcS TcTyVarSet
- getDefaultInfo :: TcS ([Type], (Bool, Bool))
- getDynFlags :: HasDynFlags m => m DynFlags
- getGlobalRdrEnvTcS :: TcS GlobalRdrEnv
- matchFam :: TyCon -> [Type] -> TcS (Maybe (TcCoercion, TcType))
- matchOpenFam :: TyCon -> [Type] -> TcS (Maybe FamInstMatch)
- checkWellStagedDFun :: PredType -> DFunId -> CtLoc -> TcS ()
- pprEq :: TcType -> TcType -> SDoc
Documentation
data WorkList
Instances
isEmptyWorkList :: WorkList -> Bool
workListFromEq :: Ct -> WorkList
workListFromNonEq :: Ct -> WorkList
workListFromCt :: Ct -> WorkList
extendWorkListEq :: Ct -> WorkList -> WorkList
extendWorkListFunEq :: Ct -> WorkList -> WorkList
extendWorkListNonEq :: Ct -> WorkList -> WorkList
extendWorkListCt :: Ct -> WorkList -> WorkList
extendWorkListCts :: [Ct] -> WorkList -> WorkList
extendWorkListEqs :: [Ct] -> WorkList -> WorkList
appendWorkList :: WorkList -> WorkList -> WorkList
selectWorkItem :: WorkList -> (Maybe Ct, WorkList)
withWorkList :: Cts -> TcS () -> TcS (Bag Implication)
workListSize :: WorkList -> Int
updWorkListTcS :: (WorkList -> WorkList) -> TcS ()
updWorkListTcS_return :: (WorkList -> (a, WorkList)) -> TcS a
updTcSImplics :: (Bag Implication -> Bag Implication) -> TcS ()
data Ct
Constructors
CDictCan | |
CIrredEvCan | |
Fields
| |
CTyEqCan | |
CFunEqCan | |
CNonCanonical | |
Fields
| |
CHoleCan | |
Fields
|
Instances
tyVarsOfCt :: Ct -> TcTyVarSet
tyVarsOfCts :: Cts -> TcTyVarSet
emitInsoluble :: Ct -> TcS ()
isWanted :: CtEvidence -> Bool
isDerived :: CtEvidence -> Bool
isWantedCt :: Ct -> Bool
isDerivedCt :: Ct -> Bool
canRewrite :: CtEvidence -> CtEvidence -> Bool
mkGivenLoc :: SkolemInfo -> TcLclEnv -> CtLoc
data TcS a
Instances
runTcSWithEvBinds :: EvBindsVar -> TcS a -> TcM a
traceFireTcS :: Ct -> SDoc -> TcS ()
bumpStepCountTcS :: TcS ()
nestImplicTcS :: EvBindsVar -> Untouchables -> InertSet -> TcS a -> TcS a
recoverTcS :: TcS a -> TcS a -> TcS a
wrapErrTcS :: TcM a -> TcS a
wrapWarnTcS :: TcM a -> TcS a
addSolvedDict :: CtEvidence -> Class -> [Type] -> TcS ()
addSolvedFunEq :: TyCon -> [TcType] -> CtEvidence -> TcType -> TcS ()
getGivenInfo :: TcS a -> TcS (Bool, [TcTyVar], a)
addUsedRdrNamesTcS :: [RdrName] -> TcS ()
data XEvTerm
data MaybeNew
Constructors
Fresh CtEvidence | |
Cached EvTerm |
freshGoal :: MaybeNew -> Maybe CtEvidence
freshGoals :: [MaybeNew] -> [CtEvidence]
getEvTerms :: [MaybeNew] -> [EvTerm]
xCtEvidence :: CtEvidence -> XEvTerm -> TcS [CtEvidence]
rewriteEvidence :: CtEvidence -> TcPredType -> TcCoercion -> TcS (Maybe CtEvidence)
rewriteEqEvidence :: CtEvidence -> SwapFlag -> TcType -> TcType -> TcCoercion -> TcCoercion -> TcS (Maybe CtEvidence)
maybeSym :: SwapFlag -> TcCoercion -> TcCoercion
newWantedEvVar :: CtLoc -> TcPredType -> TcS MaybeNew
newWantedEvVarNC :: CtLoc -> TcPredType -> TcS CtEvidence
newWantedEvVarNonrec :: CtLoc -> TcPredType -> TcS MaybeNew
Variant of newWantedEvVar that has a lower bound on the depth of the result (see Note [Preventing recursive dictionaries])
newDerived :: CtLoc -> TcPredType -> TcS (Maybe CtEvidence)
instDFunConstraints :: CtLoc -> TcThetaType -> TcS [MaybeNew]
setWantedTyBind :: TcTyVar -> TcType -> TcS ()
reportUnifications :: TcS a -> TcS (Bool, a)
getInstEnvs :: TcS (InstEnv, InstEnv)
getTcSTyBindsMap :: TcS (TyVarEnv (TcTyVar, TcType))
lookupFlatEqn :: TyCon -> [Type] -> TcS (Maybe (CtEvidence, TcType))
newFlattenSkolem :: CtEvidence -> TcType -> TcS (CtEvidence, TcType)
insertDeque :: a -> Deque a -> Deque a
emptyDeque :: Deque a
data InertSet
Constructors
IS | |
Fields
|
Instances
data InertCans
Constructors
IC | |
Fields
|
Instances
getInertEqs :: TcS (TyVarEnv [Ct])
setTcSInerts :: InertSet -> TcS ()
getInertUnsolved :: TcS (Cts, Cts)
addInertCan :: InertCans -> Ct -> InertCans
insertInertItemTcS :: Ct -> TcS ()
type EqualCtList = [Ct]
lookupSolvedDict :: InertSet -> Class -> [Type] -> Maybe CtEvidence
extendFlatCache :: TyCon -> [Type] -> CtEvidence -> TcType -> TcS ()
findTyEqs :: TyEqMap EqualCtList -> TyVar -> EqualCtList
findDictsByClass :: DictMap a -> Class -> Bag a
findFunEqsByTyCon :: FunEqMap [a] -> TyCon -> [a]
findFunEqs :: FunEqMap [a] -> TyCon -> [Type] -> [a]
addFunEq :: FunEqMap EqualCtList -> TyCon -> [Type] -> Ct -> FunEqMap EqualCtList
replaceFunEqs :: FunEqMap EqualCtList -> TyCon -> [Type] -> Ct -> FunEqMap EqualCtList
partitionFunEqs :: (Ct -> Bool) -> FunEqMap EqualCtList -> (Bag Ct, FunEqMap EqualCtList)
instDFunType :: DFunId -> [DFunInstType] -> TcS ([TcType], TcType)
newFlexiTcSTy :: Kind -> TcS TcType
instFlexiTcS :: [TKVar] -> TcS (TvSubst, [TcType])
instFlexiTcSHelperTcS :: Name -> Kind -> TcS TcType
cloneMetaTyVar :: TcTyVar -> TcS TcTyVar
data Untouchables
Instances
isFilledMetaTyVar_maybe :: TcTyVar -> TcS (Maybe Type)
getDefaultInfo :: TcS ([Type], (Bool, Bool))
getDynFlags :: HasDynFlags m => m DynFlags
matchOpenFam :: TyCon -> [Type] -> TcS (Maybe FamInstMatch)
checkWellStagedDFun :: PredType -> DFunId -> CtLoc -> TcS ()