From 788840f0fadb1771714566d2cf5c33a19ee411c4 Mon Sep 17 00:00:00 2001 From: Ulf Norell Date: Tue, 2 Apr 2019 13:39:01 +0200 Subject: [PATCH] Compile tuple construction --- src/aeso_ast_to_fcode.erl | 4 ++++ src/aeso_fcode_to_fate.erl | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/aeso_ast_to_fcode.erl b/src/aeso_ast_to_fcode.erl index 1ba0f5a..b8eb91e 100644 --- a/src/aeso_ast_to_fcode.erl +++ b/src/aeso_ast_to_fcode.erl @@ -176,6 +176,10 @@ expr_to_fcode(_Env, _Type, {bool, _, B}) -> {bool, B}; %% Variables expr_to_fcode(_Env, _Type, {id, _, X}) -> {var, X}; +%% Tuples +expr_to_fcode(Env, _Type, {tuple, _, Es}) -> + {tuple, [expr_to_fcode(Env, E) || E <- Es]}; + %% Conditionals expr_to_fcode(Env, _Type, {'if', _, Cond, Then, Else}) -> {'if', expr_to_fcode(Env, Cond), diff --git a/src/aeso_fcode_to_fate.erl b/src/aeso_fcode_to_fate.erl index 76cfb99..40a75df 100644 --- a/src/aeso_fcode_to_fate.erl +++ b/src/aeso_fcode_to_fate.erl @@ -112,6 +112,11 @@ to_scode(_Env, {integer, N}) -> to_scode(Env, {var, X}) -> [aeb_fate_code:push(lookup_var(Env, X))]; +to_scode(Env, {tuple, As}) -> + N = length(As), + [[ to_scode(Env, A) || A <- As ], + aeb_fate_code:tuple(N)]; + to_scode(Env, {binop, Type, Op, A, B}) -> [ to_scode(notail(Env), B), to_scode(push_env(Type, Env), A),