diff --git a/src/aeso_vm_decode.erl b/src/aeso_vm_decode.erl index d25512e..efd7183 100644 --- a/src/aeso_vm_decode.erl +++ b/src/aeso_vm_decode.erl @@ -95,6 +95,8 @@ from_fate({tuple_t, _, Types}, ?FATE_TUPLE(Val)) when length(Types) == tuple_size(Val) -> {tuple, [], [from_fate(Type, X) || {Type, X} <- lists:zip(Types, tuple_to_list(Val))]}; +from_fate({record_t, [{field_t, _, FName, FType}]}, Val) -> + {record, [], [{field, [], [{proj, [], FName}], from_fate(FType, Val)}]}; from_fate({record_t, Fields}, ?FATE_TUPLE(Val)) when length(Fields) == tuple_size(Val) -> {record, [], [ {field, [], [{proj, [], FName}], from_fate(FType, X)} diff --git a/test/aeso_calldata_tests.erl b/test/aeso_calldata_tests.erl index 46e0be9..2ae2cbf 100644 --- a/test/aeso_calldata_tests.erl +++ b/test/aeso_calldata_tests.erl @@ -113,6 +113,7 @@ compilable_contracts() -> {"funargs", "traffic_light", ["Pantone(12)"]}, {"funargs", "tuples", ["()"]}, %% TODO {"funargs", "due", ["FixedTTL(1020)"]}, + {"funargs", "singleton_rec", ["{x = 1000}"]}, {"variant_types", "init", []}, {"basic_auth", "init", []}, {"address_literals", "init", []}, diff --git a/test/contracts/funargs.aes b/test/contracts/funargs.aes index b63edff..19c43a2 100644 --- a/test/contracts/funargs.aes +++ b/test/contracts/funargs.aes @@ -45,3 +45,8 @@ contract FunctionArguments = entrypoint due(t : Chain.ttl) = true + + record singleton_r = { x : int } + + entrypoint singleton_rec(r : singleton_r) = + r.x