Safe Haskell | None |
---|---|
Language | Haskell2010 |
Errors that can occur when some code is being typechecked.
Synopsis
- data TypeContext
- data TCTypeError
- = AnnError AnnConvergeError
- | TypeEqError T T
- | StackEqError [T] [T]
- | UnsupportedTypeForScope T BadTypeForScope
- | NotNumericTypes T T
- | UnexpectedType (NonEmpty (NonEmpty Text))
- | InvalidInstruction ExpandedInstr Text
- | InvalidValueType T
- | NotEnoughItemsOnStack
- | IllegalEntrypoint EpNameFromRefAnnError
- | UnknownContract Address
- | EntrypointNotFound EpName
- | IllegalParamDecl ParamEpError
- | NegativeNat
- | MutezOverflow
- | InvalidAddress ParseEpAddressError
- | InvalidKeyHash CryptoParseError
- | InvalidBls12381Object DeserializationError
- | InvalidTimestamp
- | CodeAlwaysFails
- | EmptyCode
- | AnyError
- data TCError
- = TCFailedOnInstr ExpandedInstr SomeHST InstrCallStack (Maybe TypeContext) (Maybe TCTypeError)
- | TCFailedOnValue Value T Text InstrCallStack (Maybe TCTypeError)
- | TCContractError Text (Maybe TCTypeError)
- | TCUnreachableCode InstrCallStack (NonEmpty ExpandedOp)
- | TCExtError SomeHST InstrCallStack ExtError
- | TCIncompletelyTyped TCError (Contract' TypeCheckedOp)
- data ExtError
- newtype StackSize = StackSize Natural
- pairWithNodeIndex :: Word -> Text
- pairWithElems :: Word -> Text
Documentation
data TypeContext Source #
Contexts where type error can occur.
Instances
data TCTypeError Source #
Data type that represents various errors
which are related to type system.
These errors are used to specify info about type check errors
in TCError
data type.
AnnError AnnConvergeError | Annotation unify error |
TypeEqError T T | Type equality error |
StackEqError [T] [T] | Stacks equality error |
UnsupportedTypeForScope T BadTypeForScope | Error that happens when type cannot be used in the corresponding scope.
Argument of this constructor carries type which violates
the restriction, e.g. |
NotNumericTypes T T | Arithmetic operation is applied to types, at least one of which is not numeric
(e.g. |
UnexpectedType (NonEmpty (NonEmpty Text)) | Error that happens when actual types are different from the type that instruction expects. The param is an non-empty list of all expected stack types that the instruction would accept. Each expected stack types is represented as non-empty list as well. |
InvalidInstruction ExpandedInstr Text | Some instruction is invalid or used in an invalid way.
For example, |
InvalidValueType T | Error that happens when a |
NotEnoughItemsOnStack | There are not enough items on stack to perform a certain instruction. |
IllegalEntrypoint EpNameFromRefAnnError | Invalid entrypoint name provided |
UnknownContract Address | Contract with given address is not originated. |
EntrypointNotFound EpName | Given entrypoint is not present. |
IllegalParamDecl ParamEpError | Incorrect parameter declaration (with respect to entrypoints feature). |
NegativeNat | Natural numbers cannot be negative |
MutezOverflow | Exceeds the maximal mutez value |
InvalidAddress ParseEpAddressError | Address couldn't be parsed from its textual representation |
InvalidKeyHash CryptoParseError | KeyHash couldn't be parsed from its textual representation |
InvalidBls12381Object DeserializationError | BLS12-381 primitive couldn't be parsed |
InvalidTimestamp | Timestamp is not RFC339 compliant |
CodeAlwaysFails | Code always fails, but shouldn't, like in ITER body.
This is actually more general, any instruction that allows no continuation
(like |
EmptyCode | Empty block of code, like ITER body. |
AnyError | Generic error when instruction does not match something sensible. |
Instances
Type check error
Instances
Various type errors possible when checking Morley extension commands
Instances
pairWithNodeIndex :: Word -> Text Source #
Given a node index ix
, creates a string representing the
smallest possible right-combed pair with at least ix+1
nodes.
Since the node index 0 is valid even for non-pair values
(e.g. we can run GET 0
on a string
or an int
),
we simply return a type variable 'a
in this case.
>>>
pairWithNodeIndex 0
"'a"
>>>
pairWithNodeIndex 4
"pair 'a1 'a2 'a3"
>>>
pairWithNodeIndex 5
"pair 'a1 'a2 'a3 'a4"
pairWithElems :: Word -> Text Source #
Given a number n
, creates a string representing a
right-combed pair of arity n
.
pairType 3 == "pair 'a1 'a2 'a3"