ghc-9.6.3: The GHC API

Safe Haskell | Safe-Inferred
Language | Haskell2010

GHC.Tc.Validity

Synopsis

- data Rank
  - = ArbitraryRank
  - | LimitedRank Bool Rank
  - | MonoTypeRankZero
  - | MonoTypeTyConArg
  - | MonoTypeSynArg
  - | MonoTypeConstraint
  - | MustBeMonoType
- data UserTypeCtxt
  - = FunSigCtxt Name ReportRedundantConstraints
  - | InfSigCtxt Name
  - | ExprSigCtxt ReportRedundantConstraints
  - | KindSigCtxt
  - | StandaloneKindSigCtxt Name
  - | TypeAppCtxt
  - | ConArgCtxt Name
  - | TySynCtxt Name
  - | PatSynCtxt Name
  - | PatSigCtxt
  - | RuleSigCtxt FastString Name
  - | ForSigCtxt Name
  - | DefaultDeclCtxt
  - | InstDeclCtxt Bool
  - | SpecInstCtxt
  - | GenSigCtxt
  - | GhciCtxt Bool
  - | ClassSCCtxt Name
  - | SigmaCtxt
  - | DataTyCtxt Name
  - | DerivClauseCtxt
  - | TyVarBndrKindCtxt Name
  - | DataKindCtxt Name
  - | TySynKindCtxt Name
  - | TyFamResKindCtxt Name
- checkValidType :: UserTypeCtxt -> Type -> TcM ()
- checkValidMonoType :: Type -> TcM ()
- checkValidTheta :: UserTypeCtxt -> ThetaType -> TcM ()
- checkValidInstance :: UserTypeCtxt -> LHsSigType GhcRn -> Type -> TcM ()
- checkValidInstHead :: UserTypeCtxt -> Class -> [Type] -> TcM ()
- validDerivPred :: PatersonSize -> PredType -> Bool
- checkTySynRhs :: UserTypeCtxt -> TcType -> TcM ()
- checkEscapingKind :: Type -> TcM ()
- checkValidCoAxiom :: CoAxiom Branched -> TcM ()
- checkValidCoAxBranch :: TyCon -> CoAxBranch -> TcM ()
- checkValidTyFamEqn :: TyCon -> [Var] -> [Type] -> Type -> TcM ()
- checkValidAssocTyFamDeflt :: TyCon -> [Type] -> TcM ()
- checkConsistentFamInst :: AssocInstInfo -> TyCon -> CoAxBranch -> TcM ()
- arityErr :: Outputable a => SDoc -> a -> Int -> Int -> TcRnMessage
- checkTyConTelescope :: TyCon -> TcM ()

# Documentation

data Rank Source #

Constructors

ArbitraryRank |
LimitedRank Bool Rank |
MonoTypeRankZero |
MonoTypeTyConArg |
MonoTypeSynArg |
MonoTypeConstraint |
MustBeMonoType |

#### Instances

Instances details

Outputable Rank Source # |
Instance details Defined in GHC.Tc.Types.Rank Methods ppr :: Rank -> SDoc Source #

data UserTypeCtxt Source #

UserTypeCtxt describes the origin of the polymorphic type in the places where we need an expression to have that type

Constructors

FunSigCtxt Name ReportRedundantConstraints |
InfSigCtxt Name |
ExprSigCtxt ReportRedundantConstraints |
KindSigCtxt |
StandaloneKindSigCtxt Name |
TypeAppCtxt |
ConArgCtxt Name |
TySynCtxt Name |
PatSynCtxt Name |
PatSigCtxt |
RuleSigCtxt FastString Name |
ForSigCtxt Name |
DefaultDeclCtxt |
InstDeclCtxt Bool |
SpecInstCtxt |
GenSigCtxt |
GhciCtxt Bool |
ClassSCCtxt Name |
SigmaCtxt |
DataTyCtxt Name |
DerivClauseCtxt |
TyVarBndrKindCtxt Name |
DataKindCtxt Name |
TySynKindCtxt Name |
TyFamResKindCtxt Name |

#### Instances

Instances details

Eq UserTypeCtxt Source # |
Instance details Defined in GHC.Tc.Types.Origin Methods (==) :: UserTypeCtxt -> UserTypeCtxt -> Bool # (/=) :: UserTypeCtxt -> UserTypeCtxt -> Bool #

checkValidType :: UserTypeCtxt -> Type -> TcM () Source #

checkValidMonoType :: Type -> TcM () Source #

checkValidTheta :: UserTypeCtxt -> ThetaType -> TcM () Source #

checkValidInstance :: UserTypeCtxt -> LHsSigType GhcRn -> Type -> TcM () Source #

checkValidInstHead :: UserTypeCtxt -> Class -> [Type] -> TcM () Source #

validDerivPred :: PatersonSize -> PredType -> Bool Source #

checkTySynRhs :: UserTypeCtxt -> TcType -> TcM () Source #

checkEscapingKind :: Type -> TcM () Source #

checkValidCoAxiom :: CoAxiom Branched -> TcM () Source #

checkValidCoAxBranch :: TyCon -> CoAxBranch -> TcM () Source #

checkValidTyFamEqn Source #

Arguments

:: TyCon | of the type family
-> [Var] | Bound variables in the equation
-> [Type] | Type patterns
-> Type | Rhs
-> TcM () |

Do validity checks on a type family equation, including consistency with any enclosing class instance head, termination, and lack of polytypes.

checkValidAssocTyFamDeflt Source #

Arguments

:: TyCon | of the type family
-> [Type] | Type patterns
-> TcM () |

Checks that an associated type family default:

1. Only consists of arguments that are bare type variables, and
2. Has a distinct type variable in each argument.

See `Note [Type-checking default assoc decls]` in GHC.Tc.TyCl.

checkConsistentFamInst Source #

Arguments

:: AssocInstInfo |
-> TyCon | Family tycon
-> CoAxBranch |
-> TcM () |

arityErr :: Outputable a => SDoc -> a -> Int -> Int -> TcRnMessage Source #

checkTyConTelescope :: TyCon -> TcM () Source #