Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- kcClassSigType :: SkolemInfo -> [Located Name] -> LHsSigType GhcRn -> TcM ()
- tcClassSigType :: SkolemInfo -> [Located Name] -> LHsSigType GhcRn -> TcM Type
- tcHsSigType :: UserTypeCtxt -> LHsSigType GhcRn -> TcM Type
- tcHsSigWcType :: UserTypeCtxt -> LHsSigWcType GhcRn -> TcM Type
- tcHsPartialSigType :: UserTypeCtxt -> LHsSigWcType GhcRn -> TcM ([(Name, TcTyVar)], Maybe TcType, [(Name, TcTyVar)], TcThetaType, TcType)
- funsSigCtxt :: [Located Name] -> UserTypeCtxt
- addSigCtxt :: UserTypeCtxt -> LHsType GhcRn -> TcM a -> TcM a
- pprSigCtxt :: UserTypeCtxt -> LHsType GhcRn -> SDoc
- tcHsClsInstType :: UserTypeCtxt -> LHsSigType GhcRn -> TcM Type
- tcHsDeriv :: LHsSigType GhcRn -> TcM ([TyVar], Class, [Type], [Kind])
- tcDerivStrategy :: Maybe (LDerivStrategy GhcRn) -> TcM (Maybe (LDerivStrategy GhcTc), [TyVar])
- tcHsTypeApp :: LHsWcType GhcRn -> Kind -> TcM Type
- data UserTypeCtxt
- = FunSigCtxt Name Bool
- | InfSigCtxt Name
- | ExprSigCtxt
- | KindSigCtxt
- | TypeAppCtxt
- | ConArgCtxt Name
- | TySynCtxt Name
- | PatSynCtxt Name
- | PatSigCtxt
- | RuleSigCtxt Name
- | ResSigCtxt
- | ForSigCtxt Name
- | DefaultDeclCtxt
- | InstDeclCtxt Bool
- | SpecInstCtxt
- | ThBrackCtxt
- | GenSigCtxt
- | GhciCtxt Bool
- | ClassSCCtxt Name
- | SigmaCtxt
- | DataTyCtxt Name
- | DerivClauseCtxt
- | TyVarBndrKindCtxt Name
- | DataKindCtxt Name
- | TySynKindCtxt Name
- | TyFamResKindCtxt Name
- bindImplicitTKBndrs_Tv :: [Name] -> TcM a -> TcM ([TcTyVar], a)
- bindImplicitTKBndrs_Skol :: [Name] -> TcM a -> TcM ([TcTyVar], a)
- bindImplicitTKBndrs_Q_Tv :: [Name] -> TcM a -> TcM ([TcTyVar], a)
- bindImplicitTKBndrs_Q_Skol :: [Name] -> TcM a -> TcM ([TcTyVar], a)
- bindExplicitTKBndrs_Tv :: [LHsTyVarBndr GhcRn] -> TcM a -> TcM ([TcTyVar], a)
- bindExplicitTKBndrs_Skol :: [LHsTyVarBndr GhcRn] -> TcM a -> TcM ([TcTyVar], a)
- bindExplicitTKBndrs_Q_Tv :: ContextKind -> [LHsTyVarBndr GhcRn] -> TcM a -> TcM ([TcTyVar], a)
- bindExplicitTKBndrs_Q_Skol :: ContextKind -> [LHsTyVarBndr GhcRn] -> TcM a -> TcM ([TcTyVar], a)
- data ContextKind
- kcLookupTcTyCon :: Name -> TcM TcTyCon
- bindTyClTyVars :: Name -> ([TyConBinder] -> Kind -> TcM a) -> TcM a
- etaExpandAlgTyCon :: [TyConBinder] -> Kind -> TcM ([TyConBinder], Kind)
- tcbVisibilities :: TyCon -> [Type] -> [TyConBndrVis]
- zonkAndScopedSort :: [TcTyVar] -> TcM [TcTyVar]
- kcLHsQTyVars :: Name -> TyConFlavour -> Bool -> LHsQTyVars GhcRn -> TcM Kind -> TcM TcTyCon
- tcNamedWildCardBinders :: [Name] -> ([(Name, TcTyVar)] -> TcM a) -> TcM a
- tcHsLiftedType :: LHsType GhcRn -> TcM TcType
- tcHsOpenType :: LHsType GhcRn -> TcM TcType
- tcHsLiftedTypeNC :: LHsType GhcRn -> TcM TcType
- tcHsOpenTypeNC :: LHsType GhcRn -> TcM TcType
- tcLHsType :: LHsType GhcRn -> TcM (TcType, TcKind)
- tcLHsTypeUnsaturated :: LHsType GhcRn -> TcM (TcType, TcKind)
- tcCheckLHsType :: LHsType GhcRn -> Kind -> TcM TcType
- tcHsMbContext :: Maybe (LHsContext GhcRn) -> TcM [PredType]
- tcHsContext :: LHsContext GhcRn -> TcM [PredType]
- tcLHsPredType :: LHsType GhcRn -> TcM PredType
- tcInferApps :: TcTyMode -> LHsType GhcRn -> TcType -> [LHsTypeArg GhcRn] -> TcM (TcType, TcKind)
- failIfEmitsConstraints :: TcM a -> TcM a
- solveEqualities :: TcM a -> TcM a
- typeLevelMode :: TcTyMode
- kindLevelMode :: TcTyMode
- kindGeneralize :: TcType -> TcM [KindVar]
- checkExpectedKind_pp :: HasDebugCallStack => SDoc -> TcType -> TcKind -> TcKind -> TcM TcType
- tcLHsKindSig :: UserTypeCtxt -> LHsKind GhcRn -> TcM Kind
- checkDataKindSig :: DataSort -> Kind -> TcM ()
- data DataSort
- zonkPromoteType :: TcType -> TcM TcType
- tcHsPatSigType :: UserTypeCtxt -> LHsSigWcType GhcRn -> TcM ([(Name, TcTyVar)], [(Name, TcTyVar)], TcType)
- tcPatSig :: Bool -> LHsSigWcType GhcRn -> ExpSigmaType -> TcM (TcType, [(Name, TcTyVar)], [(Name, TcTyVar)], HsWrapper)
- funAppCtxt :: (Outputable fun, Outputable arg) => fun -> arg -> Int -> SDoc
- addTyConFlavCtxt :: Name -> TyConFlavour -> TcM a -> TcM a
Documentation
kcClassSigType :: SkolemInfo -> [Located Name] -> LHsSigType GhcRn -> TcM () Source #
tcClassSigType :: SkolemInfo -> [Located Name] -> LHsSigType GhcRn -> TcM Type Source #
tcHsSigType :: UserTypeCtxt -> LHsSigType GhcRn -> TcM Type Source #
tcHsSigWcType :: UserTypeCtxt -> LHsSigWcType GhcRn -> TcM Type Source #
tcHsPartialSigType :: UserTypeCtxt -> LHsSigWcType GhcRn -> TcM ([(Name, TcTyVar)], Maybe TcType, [(Name, TcTyVar)], TcThetaType, TcType) Source #
funsSigCtxt :: [Located Name] -> UserTypeCtxt Source #
addSigCtxt :: UserTypeCtxt -> LHsType GhcRn -> TcM a -> TcM a Source #
pprSigCtxt :: UserTypeCtxt -> LHsType GhcRn -> SDoc Source #
tcHsClsInstType :: UserTypeCtxt -> LHsSigType GhcRn -> TcM Type Source #
:: Maybe (LDerivStrategy GhcRn) | The deriving strategy |
-> TcM (Maybe (LDerivStrategy GhcTc), [TyVar]) | The typechecked deriving strategy and the tyvars that it binds
(if using |
Typecheck a deriving strategy. For most deriving strategies, this is a
no-op, but for the via
strategy, this requires typechecking the via
type.
data UserTypeCtxt #
bindExplicitTKBndrs_Tv :: [LHsTyVarBndr GhcRn] -> TcM a -> TcM ([TcTyVar], a) Source #
bindExplicitTKBndrs_Skol :: [LHsTyVarBndr GhcRn] -> TcM a -> TcM ([TcTyVar], a) Source #
bindExplicitTKBndrs_Q_Tv :: ContextKind -> [LHsTyVarBndr GhcRn] -> TcM a -> TcM ([TcTyVar], a) Source #
bindExplicitTKBndrs_Q_Skol :: ContextKind -> [LHsTyVarBndr GhcRn] -> TcM a -> TcM ([TcTyVar], a) Source #
data ContextKind Source #
Describes the kind expected in a certain context.
bindTyClTyVars :: Name -> ([TyConBinder] -> Kind -> TcM a) -> TcM a Source #
Used for the type variables of a type or class decl in the "kind checking" and "type checking" pass, but not in the initial-kind run.
etaExpandAlgTyCon :: [TyConBinder] -> Kind -> TcM ([TyConBinder], Kind) Source #
tcbVisibilities :: TyCon -> [Type] -> [TyConBndrVis] Source #
:: Name | of the thing being checked |
-> TyConFlavour | What sort of |
-> Bool | True = the decl being checked has a CUSK |
-> LHsQTyVars GhcRn | |
-> TcM Kind | The result kind |
-> TcM TcTyCon | A suitably-kinded TcTyCon |
Kind-check a LHsQTyVars
. If the decl under consideration has a complete,
user-supplied kind signature (CUSK), generalise the result.
Used in getInitialKind
(for tycon kinds and other kinds)
and in kind-checking (but not for tycon kinds, which are checked with
tcTyClDecls). See Note [CUSKs: complete user-supplied kind signatures]
in HsDecls.
This function does not do telescope checking.
tcHsMbContext :: Maybe (LHsContext GhcRn) -> TcM [PredType] Source #
tcHsContext :: LHsContext GhcRn -> TcM [PredType] Source #
:: TcTyMode | |
-> LHsType GhcRn | Function (for printing only) |
-> TcType | Function |
-> [LHsTypeArg GhcRn] | Args |
-> TcM (TcType, TcKind) | (f args, args, result kind) |
Apply a type of a given kind to a list of arguments. This instantiates
invisible parameters as necessary. Always consumes all the arguments,
using matchExpectedFunKind as necessary.
This takes an optional VarEnv Kind
which maps kind variables to kinds.-
These kinds should be used to instantiate invisible kind variables;
they come from an enclosing class for an associated type/data family.
tcInferApps also arranges to saturate any trailing invisible arguments of a type-family application, which is usually the right thing to do tcInferApps_nosat does not do this saturation; it is used only by ":kind" in GHCi
failIfEmitsConstraints :: TcM a -> TcM a Source #
If the inner action emits constraints, report them as errors and fail;
otherwise, propagates the return value. Useful as a wrapper around
tcImplicitTKBndrs
, which uses solveLocalEqualities, when there won't be
another chance to solve constraints
solveEqualities :: TcM a -> TcM a Source #
Type-check a thing that emits only equality constraints, then solve those constraints. Fails outright if there is trouble. Use this if you're not going to get another crack at solving (because, e.g., you're checking a datatype declaration)
typeLevelMode :: TcTyMode Source #
kindLevelMode :: TcTyMode Source #
tcLHsKindSig :: UserTypeCtxt -> LHsKind GhcRn -> TcM Kind Source #
checkDataKindSig :: DataSort -> Kind -> TcM () Source #
Checks that the return kind in a data declaration's kind signature is permissible. There are three cases:
If dealing with a data
, newtype
, data instance
, or newtype instance
declaration, check that the return kind is Type
.
If the declaration is a newtype
or newtype instance
and the
UnliftedNewtypes
extension is enabled, this check is slightly relaxed so
that a return kind of the form TYPE r
(for some r
) is permitted.
See Note [Implementation of UnliftedNewtypes]
in TcTyClsDecls.
If dealing with a data family
declaration, check that the return kind is
either of the form:
TYPE r
(for somer
), ork
(wherek
is a bare kind variable; see #12369)
A description of whether something is a
data
ornewtype
(DataDeclSort
)data instance
ornewtype instance
(DataInstanceSort
)data family
(DataFamilySort
)
At present, this data type is only consumed by checkDataKindSig
.
zonkPromoteType :: TcType -> TcM TcType Source #
Whenever a type is about to be added to the environment, it's necessary to make sure that any free meta-tyvars in the type are promoted to the current TcLevel. (They might be at a higher level due to the level-bumping in tcExplicitTKBndrs, for example.) This function both zonks *and* promotes. Why at the same time? See Note [Recipe for checking a signature]
tcHsPatSigType :: UserTypeCtxt -> LHsSigWcType GhcRn -> TcM ([(Name, TcTyVar)], [(Name, TcTyVar)], TcType) Source #
tcPatSig :: Bool -> LHsSigWcType GhcRn -> ExpSigmaType -> TcM (TcType, [(Name, TcTyVar)], [(Name, TcTyVar)], HsWrapper) Source #
funAppCtxt :: (Outputable fun, Outputable arg) => fun -> arg -> Int -> SDoc Source #
Make an appropriate message for an error in a function argument. Used for both expressions and types.
addTyConFlavCtxt :: Name -> TyConFlavour -> TcM a -> TcM a Source #
Add a "In the data declaration for T" or some such.