diff --git a/src/aeso_compiler.erl b/src/aeso_compiler.erl index 0a0fe39..eeba90c 100644 --- a/src/aeso_compiler.erl +++ b/src/aeso_compiler.erl @@ -36,7 +36,6 @@ | pp_assembler | pp_bytecode | no_code - | no_implicit_stdlib | {backend, aevm | fate} | {include, {file_system, [string()]} | {explicit_files, #{string() => binary()}}} @@ -308,7 +307,7 @@ to_sophia_value(_, _, revert, Data, Options) -> {ok, {app, [], {id, [], "abort"}, [{string, [], Err}]}} end; to_sophia_value(ContractString, FunName, ok, Data, Options0) -> - Options = [no_implicit_stdlib, no_code | Options0], + Options = [no_code | Options0], try Code = string_to_code(ContractString, Options), #{ typed_ast := TypedAst, type_env := TypeEnv} = Code, @@ -369,7 +368,7 @@ create_calldata(Code, Fun, Args) -> {ok, binary()} | {error, term()}. create_calldata(Code, Fun, Args, Options0) -> - Options = [no_implicit_stdlib, no_code | Options0], + Options = [no_code | Options0], case proplists:get_value(backend, Options, aevm) of aevm -> case check_call(Code, Fun, Args, Options) of @@ -392,7 +391,7 @@ decode_calldata(ContractString, FunName, Calldata) -> decode_calldata(ContractString, FunName, Calldata, [{backend, aevm}]). decode_calldata(ContractString, FunName, Calldata, Options0) -> - Options = [no_implicit_stdlib, no_code | Options0], + Options = [no_code | Options0], try Code = string_to_code(ContractString, Options), #{ typed_ast := TypedAst, type_env := TypeEnv} = Code, diff --git a/test/aeso_abi_tests.erl b/test/aeso_abi_tests.erl index 9d0a022..c6ce469 100644 --- a/test/aeso_abi_tests.erl +++ b/test/aeso_abi_tests.erl @@ -80,11 +80,11 @@ encode_decode_sophia_string(SophiaType, String) -> , " record r = {x : an_alias(int), y : variant}\n" , " datatype variant = Red | Blue(map(string, int))\n" , " entrypoint foo : arg_type => arg_type\n" ], - case aeso_compiler:check_call(lists:flatten(Code), "foo", [String], [no_implicit_stdlib]) of + case aeso_compiler:check_call(lists:flatten(Code), "foo", [String], []) of {ok, _, {[Type], _}, [Arg]} -> io:format("Type ~p~n", [Type]), Data = encode(Arg), - case aeso_compiler:to_sophia_value(Code, "foo", ok, Data, [no_implicit_stdlib]) of + case aeso_compiler:to_sophia_value(Code, "foo", ok, Data, []) of {ok, Sophia} -> lists:flatten(io_lib:format("~s", [prettypr:format(aeso_pretty:expr(Sophia))])); {error, Err} -> @@ -152,7 +152,7 @@ oracle_test() -> " Oracle.get_question(o, q)\n", {ok, _, {[word, word], {list, string}}, [16#123, 16#456]} = aeso_compiler:check_call(Contract, "question", ["ok_111111111111111111111111111111ZrdqRz9", - "oq_1111111111111111111111111111113AFEFpt5"], [no_implicit_stdlib]), + "oq_1111111111111111111111111111113AFEFpt5"], []), ok. @@ -162,7 +162,7 @@ permissive_literals_fail_test() -> " stateful entrypoint haxx(o : oracle(list(string), option(int))) =\n" " Chain.spend(o, 1000000)\n", {error, <<"Type errors\nCannot unify", _/binary>>} = - aeso_compiler:check_call(Contract, "haxx", ["#123"], [no_implicit_stdlib]), + aeso_compiler:check_call(Contract, "haxx", ["#123"], []), ok. encode_decode_calldata(FunName, Types, Args) -> @@ -173,8 +173,8 @@ encode_decode_calldata(FunName, Types, Args, RetType) -> encode_decode_calldata_(Code, FunName, Args, RetType). encode_decode_calldata_(Code, FunName, Args, RetVMType) -> - {ok, Calldata} = aeso_compiler:create_calldata(Code, FunName, Args, [no_implicit_stdlib]), - {ok, _, {ArgTypes, RetType}, _} = aeso_compiler:check_call(Code, FunName, Args, [{backend, aevm}, no_implicit_stdlib]), + {ok, Calldata} = aeso_compiler:create_calldata(Code, FunName, Args, []), + {ok, _, {ArgTypes, RetType}, _} = aeso_compiler:check_call(Code, FunName, Args, [{backend, aevm}]), ?assertEqual(RetType, RetVMType), CalldataType = {tuple, [word, {tuple, ArgTypes}]}, {ok, {_Hash, ArgTuple}} = aeb_heap:from_binary(CalldataType, Calldata), @@ -182,7 +182,7 @@ encode_decode_calldata_(Code, FunName, Args, RetVMType) -> "init" -> ok; _ -> - {ok, _ArgTypes, ValueASTs} = aeso_compiler:decode_calldata(Code, FunName, Calldata, [no_implicit_stdlib]), + {ok, _ArgTypes, ValueASTs} = aeso_compiler:decode_calldata(Code, FunName, Calldata, []), Values = [ prettypr:format(aeso_pretty:expr(V)) || V <- ValueASTs ], ?assertMatch({X, X}, {Args, Values}) end, diff --git a/test/aeso_aci_tests.erl b/test/aeso_aci_tests.erl index 18cb499..eee30ae 100644 --- a/test/aeso_aci_tests.erl +++ b/test/aeso_aci_tests.erl @@ -9,7 +9,7 @@ simple_aci_test_() -> test_contract(N) -> {Contract,MapACI,DecACI} = test_cases(N), - {ok,JSON} = aeso_aci:contract_interface(json, Contract, [no_implicit_stdlib]), + {ok,JSON} = aeso_aci:contract_interface(json, Contract), ?assertEqual([MapACI], JSON), ?assertEqual({ok, DecACI}, aeso_aci:render_aci_json(JSON)). @@ -90,8 +90,7 @@ aci_test_() -> fun() -> aci_test_contract(ContractName) end} || ContractName <- all_contracts()]. -all_contracts() -> [C || C <- aeso_compiler_tests:compilable_contracts() - , not aeso_compiler_tests:wants_stdlib(C)]. +all_contracts() -> aeso_compiler_tests:compilable_contracts(). aci_test_contract(Name) -> String = aeso_test_utils:read_contract(Name), diff --git a/test/aeso_calldata_tests.erl b/test/aeso_calldata_tests.erl index aa732a7..2f419cc 100644 --- a/test/aeso_calldata_tests.erl +++ b/test/aeso_calldata_tests.erl @@ -21,14 +21,12 @@ calldata_test_() -> ContractString = aeso_test_utils:read_contract(ContractName), AevmExprs = case not lists:member(ContractName, not_yet_compilable(aevm)) of - true -> ast_exprs(ContractString, Fun, Args, [{backend, aevm}] - ++ [no_implicit_stdlib || not aeso_compiler_tests:wants_stdlib(ContractName)]); + true -> ast_exprs(ContractString, Fun, Args, [{backend, aevm}]); false -> undefined end, FateExprs = case not lists:member(ContractName, not_yet_compilable(fate)) of - true -> ast_exprs(ContractString, Fun, Args, [{backend, fate}] - ++ [no_implicit_stdlib || not aeso_compiler_tests:wants_stdlib(ContractName)]); + true -> ast_exprs(ContractString, Fun, Args, [{backend, fate}]); false -> undefined end, case FateExprs == undefined orelse AevmExprs == undefined of @@ -47,14 +45,12 @@ calldata_aci_test_() -> io:format("ACI:\n~s\n", [ContractACIBin]), AevmExprs = case not lists:member(ContractName, not_yet_compilable(aevm)) of - true -> ast_exprs(ContractACI, Fun, Args, [{backend, aevm}] - ++ [no_implicit_stdlib || not aeso_compiler_tests:wants_stdlib(ContractName)]); + true -> ast_exprs(ContractACI, Fun, Args, [{backend, aevm}]); false -> undefined end, FateExprs = case not lists:member(ContractName, not_yet_compilable(fate)) of - true -> ast_exprs(ContractACI, Fun, Args, [{backend, fate}] - ++ [no_implicit_stdlib || not aeso_compiler_tests:wants_stdlib(ContractName)]); + true -> ast_exprs(ContractACI, Fun, Args, [{backend, fate}]); false -> undefined end, case FateExprs == undefined orelse AevmExprs == undefined of diff --git a/test/aeso_compiler_tests.erl b/test/aeso_compiler_tests.erl index 9a9f743..6ba37e1 100644 --- a/test/aeso_compiler_tests.erl +++ b/test/aeso_compiler_tests.erl @@ -76,8 +76,7 @@ check_errors(Expect, ErrorString) -> compile(Backend, Name) -> compile(Backend, Name, - [{include, {file_system, [aeso_test_utils:contract_path()]}}] - ++ [no_implicit_stdlib || not wants_stdlib(Name)]). + [{include, {file_system, [aeso_test_utils:contract_path()]}}]). compile(Backend, Name, Options) -> String = aeso_test_utils:read_contract(Name), @@ -375,12 +374,3 @@ failing_contracts() -> ]} ]. -wants_stdlib(Name) -> - lists:member - (Name, - [ "stdlib_include", - "list_comp", - "list_comp_not_a_list", - "list_comp_if_not_bool", - "list_comp_bad_shadow" - ]). diff --git a/test/aeso_parser_tests.erl b/test/aeso_parser_tests.erl index 4c75854..ea6c517 100644 --- a/test/aeso_parser_tests.erl +++ b/test/aeso_parser_tests.erl @@ -15,7 +15,7 @@ simple_contracts_test_() -> ?assertMatch( [{contract, _, {con, _, "Identity"}, [{letfun, _, {id, _, "id"}, [{arg, _, {id, _, "x"}, {id, _, "_"}}], {id, _, "_"}, - {id, _, "x"}}]}], parse_string(Text, [no_implicit_stdlib])), + {id, _, "x"}}]}], parse_string(Text)), ok end}, {"Operator precedence test.", @@ -81,13 +81,13 @@ parse_string(Text, Opts) -> parse_expr(Text) -> [{letval, _, _, _, Expr}] = - parse_string("let _ = " ++ Text, [no_implicit_stdlib]), + parse_string("let _ = " ++ Text), Expr. round_trip(Text) -> - Contract = parse_string(Text, [no_implicit_stdlib]), + Contract = parse_string(Text), Text1 = prettypr:format(aeso_pretty:decls(strip_stdlib(Contract))), - Contract1 = parse_string(Text1, [no_implicit_stdlib]), + Contract1 = parse_string(Text1), NoSrcLoc = remove_line_numbers(Contract), NoSrcLoc1 = remove_line_numbers(Contract1), ?assertMatch(NoSrcLoc, diff(NoSrcLoc, NoSrcLoc1)). diff --git a/test/contracts/manual_stdlib_include.aes b/test/contracts/manual_stdlib_include.aes index 5937c37..76a896e 100644 --- a/test/contracts/manual_stdlib_include.aes +++ b/test/contracts/manual_stdlib_include.aes @@ -1,5 +1,4 @@ -// This contract should be compiled with no_implicit_stdlib option. -// It should include Lists.aes implicitly however, because Option.aes depends on it. +// This should include Lists.aes implicitly, since Option.aes does. include "Option.aes" contract Test = diff --git a/test/contracts/stdlib_include.aes b/test/contracts/stdlib_include.aes index 6149db2..d890ae8 100644 --- a/test/contracts/stdlib_include.aes +++ b/test/contracts/stdlib_include.aes @@ -1,3 +1,6 @@ +include "List.aes" +include "Func.aes" + contract StdInc = entrypoint test() = List.map((x) => Func.id(x), [1,2,3,4])