Fixing a bug where chest and chest_key were not decompiled (interpreter value to michelson_value) correctly because their type were bytes instead of chest/chest_key
this code was failing: https://github.com/smart-chain-fr/Ligolib/blob/main/randomness/src/cameligo/ref.mligo with
Bad stack item 0. Type bytes is not compatible with type chest_key.
while this one was OK: https://gitlab.com/ligolang/ligo/blob/dev/src/test/contracts/interpreter_tests/test_timelock.mligo
Not sure why
edit: the fact that the contract parameter is wrapped into a sum type (Reveal .. | Nothing ..) did have an effect on how michelson typecheck the inputs ?
Created a new Literal_chest and Litearal_chest_key case (non reachable by the user) so that we could create them in the interpreter (from bytes) and propagate the correct type in
let literal_type_prim (l : literal) : string = match l with | Literal_unit -> "unit" | Literal_int _ -> "int" | Literal_nat _ -> "nat" | Literal_timestamp _ -> "timestamp" | Literal_mutez _ -> "mutez" | Literal_string _ -> "string" | Literal_bytes _ -> "bytes" | Literal_address _ -> "address" | Literal_signature _ -> "signature" | Literal_key _ -> "key" | Literal_key_hash _ -> "key_hash" | Literal_chain_id _ -> "chain_id" | Literal_operation _ -> "operation" | Literal_bls12_381_g1 _ -> "bls12_381_g1" | Literal_bls12_381_g2 _ -> "bls12_381_g2" | Literal_bls12_381_fr _ -> "bls12_381_fr" | Literal_chest _ -> "chest" | Literal_chest_key _ -> "chest_key"
has a changelog entry