Add test for AENS.resolve with using
This commit is contained in:
parent
d4d16a66eb
commit
f22c1aa82e
@ -1814,14 +1814,14 @@ infer_expr(Env, {app, Ann, Fun, Args0} = App) ->
|
|||||||
NewFun0 = infer_expr(Env, Fun),
|
NewFun0 = infer_expr(Env, Fun),
|
||||||
NewArgs = [infer_expr(Env, A) || A <- Args],
|
NewArgs = [infer_expr(Env, A) || A <- Args],
|
||||||
ArgTypes = [T || {typed, _, _, T} <- NewArgs],
|
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},
|
When = {infer_app, Fun, NamedArgs1, Args, FunType, ArgTypes},
|
||||||
GeneralResultType = fresh_uvar(Ann),
|
GeneralResultType = fresh_uvar(Ann),
|
||||||
ResultType = fresh_uvar(Ann),
|
ResultType = fresh_uvar(Ann),
|
||||||
unify(Env, FunType, {fun_t, [], NamedArgsVar, ArgTypes, GeneralResultType}, When),
|
unify(Env, FunType, {fun_t, [], NamedArgsVar, ArgTypes, GeneralResultType}, When),
|
||||||
when_warning(warn_negative_spend, fun() -> warn_potential_negative_spend(Ann, NewFun1, NewArgs) end),
|
when_warning(warn_negative_spend, fun() -> warn_potential_negative_spend(Ann, NewFun1, NewArgs) end),
|
||||||
[ add_constraint({aens_resolve_type, GeneralResultType})
|
[ add_constraint({aens_resolve_type, GeneralResultType})
|
||||||
|| element(3, Fun) =:= ["AENS", "resolve"] ],
|
|| element(3, FunName) =:= ["AENS", "resolve"] ],
|
||||||
add_constraint(
|
add_constraint(
|
||||||
#dependent_type_constraint{ named_args_t = NamedArgsVar,
|
#dependent_type_constraint{ named_args_t = NamedArgsVar,
|
||||||
named_args = NamedArgs1,
|
named_args = NamedArgs1,
|
||||||
|
@ -1070,6 +1070,12 @@ failing_contracts() ->
|
|||||||
" `list(int)`\n"
|
" `list(int)`\n"
|
||||||
"It must be a `string` or a pubkey type (`address`, `oracle`, etc)">>
|
"It must be a `string` or a pubkey type (`address`, `oracle`, etc)">>
|
||||||
])
|
])
|
||||||
|
, ?TYPE_ERROR(bad_aens_resolve_using,
|
||||||
|
[<<?Pos(7,5)
|
||||||
|
"Invalid return type of `AENS.resolve`:\n"
|
||||||
|
" `list(int)`\n"
|
||||||
|
"It must be a `string` or a pubkey type (`address`, `oracle`, etc)">>
|
||||||
|
])
|
||||||
].
|
].
|
||||||
|
|
||||||
-define(Path(File), "code_errors/" ??File).
|
-define(Path(File), "code_errors/" ??File).
|
||||||
|
9
test/contracts/bad_aens_resolve_using.aes
Normal file
9
test/contracts/bad_aens_resolve_using.aes
Normal file
@ -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() = ()
|
Loading…
x
Reference in New Issue
Block a user