Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- type TcInstrHandler = forall inp. (Typeable inp, HasCallStack) => ExpandedInstr -> HST inp -> TypeCheckInstrNoExcept (TypeCheckedSeq inp)
- type TcOriginatedContracts = Map ContractHash SomeParamType
- type TcResult inp = Either TCError (SomeInstr inp)
- data TypeCheckEnv = TypeCheckEnv {}
- data TypeCheckOptions = TypeCheckOptions {}
- type TypeCheck = ReaderT TypeCheckOptions (ExceptT TCError (State TypeCheckEnv))
- type TypeCheckNoExcept = ReaderT TypeCheckOptions (State TypeCheckEnv)
- runTypeCheck :: TypeCheckMode -> TypeCheckOptions -> TypeCheck a -> Either TCError a
- type TypeCheckInstr = ReaderT InstrCallStack TypeCheck
- type TypeCheckInstrNoExcept = ReaderT InstrCallStack TypeCheckNoExcept
- runTypeCheckIsolated :: TypeCheck a -> Either TCError a
- runTypeCheckInstrIsolated :: TypeCheckInstr a -> Either TCError a
- liftNoExcept :: TypeCheckInstrNoExcept a -> TypeCheckInstr a
- liftNoExcept' :: TypeCheckNoExcept a -> TypeCheck a
- throwingTCError :: TypeCheckInstrNoExcept (TypeCheckedSeq inp) -> TypeCheckInstr (SomeInstr inp)
- throwingTCError' :: TypeCheckNoExcept (TypeCheckedSeq inp) -> TypeCheck (SomeInstr inp)
- preserving :: TypeCheckInstrNoExcept (TypeCheckedSeq inp) -> ([TypeCheckedOp] -> TypeCheckedInstr) -> (SomeInstr inp -> TypeCheckInstr (SomeInstr inp')) -> TypeCheckInstrNoExcept (TypeCheckedSeq inp')
- preserving' :: TypeCheckInstrNoExcept (TypeCheckedSeq inp) -> ([TypeCheckedOp] -> TypeCheckedInstr) -> (SomeInstr inp -> TypeCheckInstrNoExcept (TypeCheckedSeq inp')) -> TypeCheckInstrNoExcept (TypeCheckedSeq inp')
- guarding :: ExpandedInstr -> TypeCheckInstr a -> (a -> TypeCheckInstrNoExcept (TypeCheckedSeq inp)) -> TypeCheckInstrNoExcept (TypeCheckedSeq inp)
- guarding_ :: ExpandedInstr -> TypeCheckInstr a -> TypeCheckInstrNoExcept (TypeCheckedSeq inp) -> TypeCheckInstrNoExcept (TypeCheckedSeq inp)
- tcEither :: (TCError -> TypeCheckInstrNoExcept a) -> (b -> TypeCheckInstrNoExcept a) -> TypeCheckInstr b -> TypeCheckInstrNoExcept a
- tcExtFramesL :: Lens' TypeCheckEnv TcExtFrames
- tcModeL :: Lens' TypeCheckEnv TypeCheckMode
- data TypeCheckMode
- data SomeParamType = forall t.ParameterScope t => SomeParamType (Sing t) (ParamNotes t)
- mkSomeParamType :: ParameterType -> Either TCError SomeParamType
- mkSomeParamTypeUnsafe :: HasCallStack => ParameterType -> SomeParamType
Documentation
type TcInstrHandler = forall inp. (Typeable inp, HasCallStack) => ExpandedInstr -> HST inp -> TypeCheckInstrNoExcept (TypeCheckedSeq inp) Source #
data TypeCheckEnv Source #
The typechecking state
data TypeCheckOptions Source #
Instances
Default TypeCheckOptions Source # | |
Defined in Michelson.TypeCheck.TypeCheck def :: TypeCheckOptions # |
type TypeCheck = ReaderT TypeCheckOptions (ExceptT TCError (State TypeCheckEnv)) Source #
type TypeCheckNoExcept = ReaderT TypeCheckOptions (State TypeCheckEnv) Source #
A non-throwing alternative for TypeCheck
. Mainly meant to be used for
construction of a partially typed tree (see TypeCheckedSeq
).
runTypeCheck :: TypeCheckMode -> TypeCheckOptions -> TypeCheck a -> Either TCError a Source #
runTypeCheckIsolated :: TypeCheck a -> Either TCError a Source #
Run type checker as if it worked isolated from other world - no access to environment of the current contract is allowed.
Use this function for test purposes only or for some utilities when environment does not matter. In particular, it is assumed that whatever we typecheck does not depend on the parameter type of the contract which is being typechecked (because there is no contract that we are typechecking).
runTypeCheckInstrIsolated :: TypeCheckInstr a -> Either TCError a Source #
Similar to runTypeCheckIsolated
, but for 'TypeCheckInstr.'
liftNoExcept :: TypeCheckInstrNoExcept a -> TypeCheckInstr a Source #
liftNoExcept' :: TypeCheckNoExcept a -> TypeCheck a Source #
throwingTCError :: TypeCheckInstrNoExcept (TypeCheckedSeq inp) -> TypeCheckInstr (SomeInstr inp) Source #
throwingTCError' :: TypeCheckNoExcept (TypeCheckedSeq inp) -> TypeCheck (SomeInstr inp) Source #
:: TypeCheckInstrNoExcept (TypeCheckedSeq inp) | Acquiring computation |
-> ([TypeCheckedOp] -> TypeCheckedInstr) | The parent instruction constructor |
-> (SomeInstr inp -> TypeCheckInstr (SomeInstr inp')) | The throwing action |
-> TypeCheckInstrNoExcept (TypeCheckedSeq inp') |
Perform a throwing action on an acquired instruction. Preserve the acquired result by embedding it into a type checking tree with a specified parent instruction.
:: TypeCheckInstrNoExcept (TypeCheckedSeq inp) | Acquiring computation |
-> ([TypeCheckedOp] -> TypeCheckedInstr) | The parent instruction constructor |
-> (SomeInstr inp -> TypeCheckInstrNoExcept (TypeCheckedSeq inp')) | The action |
-> TypeCheckInstrNoExcept (TypeCheckedSeq inp') |
Perform a non-throwing action on an acquired instruction. Preserve the acquired result even if the action does not succeed. Embed the result into a type checking tree with a specified parent instruction.
:: ExpandedInstr | Untyped instruction |
-> TypeCheckInstr a | Acquiring computation |
-> (a -> TypeCheckInstrNoExcept (TypeCheckedSeq inp)) | Follow-up action |
-> TypeCheckInstrNoExcept (TypeCheckedSeq inp) |
Acquire a resource. If successfully, call a follow-up action on it, otherwise embed the error into a type checking tree along with a specified untyped instruction.
guarding_ :: ExpandedInstr -> TypeCheckInstr a -> TypeCheckInstrNoExcept (TypeCheckedSeq inp) -> TypeCheckInstrNoExcept (TypeCheckedSeq inp) Source #
Same as guarding
but doesn't pass an acquired result to a follow-up
action.
:: (TCError -> TypeCheckInstrNoExcept a) | Call this if the action throws |
-> (b -> TypeCheckInstrNoExcept a) | Call this if it doesn't |
-> TypeCheckInstr b | The action to perform |
-> TypeCheckInstrNoExcept a | A non-throwing action |
data TypeCheckMode Source #
Typechecking mode that tells the type checker whether it is typechecking contract code in actual contract, lambda, or test.
data SomeParamType Source #
forall t.ParameterScope t => SomeParamType (Sing t) (ParamNotes t) |
Instances
Eq SomeParamType Source # |
|
Defined in Michelson.TypeCheck.TypeCheck (==) :: SomeParamType -> SomeParamType -> Bool # (/=) :: SomeParamType -> SomeParamType -> Bool # | |
Show SomeParamType Source # |
|
Defined in Michelson.TypeCheck.TypeCheck showsPrec :: Int -> SomeParamType -> ShowS # show :: SomeParamType -> String # showList :: [SomeParamType] -> ShowS # | |
Buildable SomeParamType Source # |
|
Defined in Michelson.TypeCheck.TypeCheck build :: SomeParamType -> Builder # |
mkSomeParamTypeUnsafe :: HasCallStack => ParameterType -> SomeParamType Source #
Construct SomeParamType
from ParameterType
, mainly used in test.