Test/fix chest ty decompile val
Problem
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 ?
Solution
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 src/passes/17-stacking/compiler_program.ml
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