From f22c1aa82e318440368eeb93f574da5babf5cf52 Mon Sep 17 00:00:00 2001 From: Gaith Hallak Date: Thu, 23 Jun 2022 22:26:16 +0400 Subject: [PATCH] Add test for AENS.resolve with using --- src/aeso_ast_infer_types.erl | 4 ++-- test/aeso_compiler_tests.erl | 6 ++++++ test/contracts/bad_aens_resolve_using.aes | 9 +++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 test/contracts/bad_aens_resolve_using.aes diff --git a/src/aeso_ast_infer_types.erl b/src/aeso_ast_infer_types.erl index 8ba9ad1..c76f5e4 100644 --- a/src/aeso_ast_infer_types.erl +++ b/src/aeso_ast_infer_types.erl @@ -1814,14 +1814,14 @@ infer_expr(Env, {app, Ann, Fun, Args0} = App) -> NewFun0 = infer_expr(Env, Fun), NewArgs = [infer_expr(Env, A) || A <- Args], ArgTypes = [T || {typed, _, _, T} <- NewArgs], - NewFun1 = {typed, _, _, FunType} = infer_var_args_fun(Env, NewFun0, NamedArgs1, ArgTypes), + NewFun1 = {typed, _, FunName, FunType} = infer_var_args_fun(Env, NewFun0, NamedArgs1, ArgTypes), When = {infer_app, Fun, NamedArgs1, Args, FunType, ArgTypes}, GeneralResultType = fresh_uvar(Ann), ResultType = fresh_uvar(Ann), unify(Env, FunType, {fun_t, [], NamedArgsVar, ArgTypes, GeneralResultType}, When), when_warning(warn_negative_spend, fun() -> warn_potential_negative_spend(Ann, NewFun1, NewArgs) end), [ add_constraint({aens_resolve_type, GeneralResultType}) - || element(3, Fun) =:= ["AENS", "resolve"] ], + || element(3, FunName) =:= ["AENS", "resolve"] ], add_constraint( #dependent_type_constraint{ named_args_t = NamedArgsVar, named_args = NamedArgs1, diff --git a/test/aeso_compiler_tests.erl b/test/aeso_compiler_tests.erl index 352b04c..c46cc5e 100644 --- a/test/aeso_compiler_tests.erl +++ b/test/aeso_compiler_tests.erl @@ -1070,6 +1070,12 @@ failing_contracts() -> " `list(int)`\n" "It must be a `string` or a pubkey type (`address`, `oracle`, etc)">> ]) + , ?TYPE_ERROR(bad_aens_resolve_using, + [<> + ]) ]. -define(Path(File), "code_errors/" ??File). diff --git a/test/contracts/bad_aens_resolve_using.aes b/test/contracts/bad_aens_resolve_using.aes new file mode 100644 index 0000000..8556f46 --- /dev/null +++ b/test/contracts/bad_aens_resolve_using.aes @@ -0,0 +1,9 @@ +contract BadAENSresolve = + using AENS + + type t('a) = option(list('a)) + + function fail() : t(int) = + resolve("foo.aet", "whatever") + + entrypoint main_fun() = () \ No newline at end of file