Copyright | (c) 2013-2015 Galois, Inc. |
---|---|
License | BSD3 |
Maintainer | cryptol@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell98 |
- tcModule :: Module -> InferInput -> IO (InferOutput Module)
- tcExpr :: Expr -> InferInput -> IO (InferOutput (Expr, Schema))
- tcDecls :: FromDecl d => [d] -> InferInput -> IO (InferOutput [DeclGroup])
- data InferInput = InferInput {}
- data InferOutput a
- data NameSeeds
- nameSeeds :: NameSeeds
- data Error
- = ErrorMsg Doc
- | KindMismatch Kind Kind
- | TooManyTypeParams Int Kind
- | TooManyTySynParams QName Int
- | TooFewTySynParams QName Int
- | RepeatedTyParams [TParam]
- | RepeatedDefinitions QName [Range]
- | RecursiveTypeDecls [LQName]
- | UndefinedTypeSynonym QName
- | UndefinedVariable QName
- | UndefinedTypeParam QName
- | MultipleTypeParamDefs QName [Range]
- | TypeMismatch Type Type
- | RecursiveType Type Type
- | UnsolvedGoal Goal
- | UnsolvedDelcayedCt DelayedCt
- | UnexpectedTypeWildCard
- | TypeVariableEscaped Type [TVar]
- | NotForAll TVar Type
- | UnusableFunction QName Prop
- | TooManyPositionalTypeParams
- | CannotMixPositionalAndNamedTypeParams
- | AmbiguousType [QName]
- data Warning
- ppWarning :: (Range, Warning) -> Doc
- ppError :: (Range, Error) -> Doc
Documentation
tcModule :: Module -> InferInput -> IO (InferOutput Module) Source
tcExpr :: Expr -> InferInput -> IO (InferOutput (Expr, Schema)) Source
tcDecls :: FromDecl d => [d] -> InferInput -> IO (InferOutput [DeclGroup]) Source
data InferInput Source
Information needed for type inference.
InferInput | |
|
data InferOutput a Source
The results of type inference.
InferFailed [(Range, Warning)] [(Range, Error)] | We found some errors |
InferOK [(Range, Warning)] NameSeeds a | Type inference was successful. |
Show a => Show (InferOutput a) |
Various errors that might happen during type checking/inference
ErrorMsg Doc | Just say this |
KindMismatch Kind Kind | Expected kind, inferred kind |
TooManyTypeParams Int Kind | Number of extra parameters, kind of resut
(which should not be of the form |
TooManyTySynParams QName Int | Type-synonym, number of extra params |
TooFewTySynParams QName Int | Type-synonym, number of missing params |
RepeatedTyParams [TParam] | Type parameters with the same name (in definition) |
RepeatedDefinitions QName [Range] | Multiple definitions for the same name |
RecursiveTypeDecls [LQName] | The type synonym declarations are recursive |
UndefinedTypeSynonym QName | Use of a type synonym that was not defined |
UndefinedVariable QName | Use of a variable that was not defined |
UndefinedTypeParam QName | Attempt to explicitly instantiate a non-existent param. |
MultipleTypeParamDefs QName [Range] | Multiple definitions for the same type parameter |
TypeMismatch Type Type | Expected type, inferred type |
RecursiveType Type Type | Unification results in a recursive type |
UnsolvedGoal Goal | A constraint that we could not solve |
UnsolvedDelcayedCt DelayedCt | A constraint (with context) that we could not solve |
UnexpectedTypeWildCard | Type wild cards are not allowed in this context (e.g., definitions of type synonyms). |
TypeVariableEscaped Type [TVar] | Unification variable depends on quantified variables that are not in scope. |
NotForAll TVar Type | Quantified type variables (of kind *) needs to match the given type, so it does not work for all types. |
UnusableFunction QName Prop | The given constraint causes the signature of the function to be not-satisfiable. |
TooManyPositionalTypeParams | Too many positional type arguments, in an explicit type instantiation |
CannotMixPositionalAndNamedTypeParams | |
AmbiguousType [QName] |