From 58ab771dff8750b02bf9c199d4adde3165e177a5 Mon Sep 17 00:00:00 2001 From: Ulf Norell Date: Tue, 3 Sep 2019 09:01:11 +0200 Subject: [PATCH] Make `init` do the state updates in FATE (instead of a new INIT function) --- src/aeso_ast_to_fcode.erl | 10 ++++------ src/aeso_fcode_to_fate.erl | 1 - 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/aeso_ast_to_fcode.erl b/src/aeso_ast_to_fcode.erl index 29473e7..82c276b 100644 --- a/src/aeso_ast_to_fcode.erl +++ b/src/aeso_ast_to_fcode.erl @@ -20,7 +20,7 @@ -type fun_name() :: {entrypoint, binary()} | {local_fun, [string()]} - | init | event. + | event. -type var_name() :: string(). -type sophia_name() :: [string()]. @@ -910,10 +910,9 @@ add_init_function(Env, StateType, Funs0) -> false -> Funs = add_default_init_function(Env, StateType, Funs0), InitName = {entrypoint, <<"init">>}, - InitFun = #{ args := InitArgs } = maps:get(InitName, Funs, none), - Vars = [ {var, X} || {X, _} <- InitArgs ], - Funs#{ init => InitFun#{ return => {tuple, []}, - body => {builtin, set_state, [{def, InitName, Vars}]} } } + InitFun = #{ body := InitBody} = maps:get(InitName, Funs), + Funs#{ InitName => InitFun#{ return => {tuple, []}, + body => {builtin, set_state, [InitBody]} } } end. add_default_init_function(_Env, StateType, Funs) -> @@ -1460,7 +1459,6 @@ pp_fun(Name, #{ args := Args, return := Return, body := Body }) -> pp_text(" : "), pp_ftype(Return), pp_text(" =")]), prettypr:nest(2, pp_fexpr(Body))). -pp_fun_name(init) -> pp_text('INIT'); pp_fun_name(event) -> pp_text(event); pp_fun_name({entrypoint, E}) -> pp_text(binary_to_list(E)); pp_fun_name({local_fun, Q}) -> pp_text(string:join(Q, ".")). diff --git a/src/aeso_fcode_to_fate.erl b/src/aeso_fcode_to_fate.erl index 304ffdb..9412c79 100644 --- a/src/aeso_fcode_to_fate.erl +++ b/src/aeso_fcode_to_fate.erl @@ -143,7 +143,6 @@ compile(FCode, Options) -> make_function_id(X) -> aeb_fate_code:symbol_identifier(make_function_name(X)). -make_function_name(init) -> <<"INIT">>; make_function_name(event) -> <<"Chain.event">>; make_function_name({entrypoint, Name}) -> Name; make_function_name({local_fun, Xs}) -> list_to_binary("." ++ string:join(Xs, ".")).