From 499e2f8200519bbe12096fd80d789c7e8f86c511 Mon Sep 17 00:00:00 2001 From: Ulf Norell Date: Fri, 30 Aug 2019 16:40:17 +0200 Subject: [PATCH] Handle records and type aliases correctly in fcode --- src/aeso_ast_to_fcode.erl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/aeso_ast_to_fcode.erl b/src/aeso_ast_to_fcode.erl index 35d5d06..0cf9968 100644 --- a/src/aeso_ast_to_fcode.erl +++ b/src/aeso_ast_to_fcode.erl @@ -304,14 +304,15 @@ typedef_to_fcode(Env, Id = {id, _, Name}, Xs, Def) -> FDef = fun(Args) when length(Args) == length(Xs) -> Sub = maps:from_list(lists:zip([X || {tvar, _, X} <- Xs], Args)), case Def of - {record_t, Fields} -> {todo, Xs, Args, record_t, Fields}; + {record_t, Fields} -> + {tuple, [type_to_fcode(Env, Sub, T) || {field_t, _, _, T} <- Fields]}; {variant_t, Cons} -> FCons = [ begin {constr_t, _, _, Ts} = Con, [type_to_fcode(Env, Sub, T) || T <- Ts] end || Con <- Cons ], {variant, FCons}; - {alias_t, Type} -> {todo, Xs, Args, alias_t, Type} + {alias_t, Type} -> type_to_fcode(Env, Sub, Type) end; (Args) -> internal_error({type_arity_mismatch, Name, length(Args), length(Xs)}) end,