Add support for protected contract calls #732

Merged
zxq9 merged 6 commits from GH-203-protected-calls into master 2020-03-03 00:15:06 +09:00
Showing only changes of commit 9487b79f42 - Show all commits

View File

@ -45,7 +45,7 @@
type :: utype()}). type :: utype()}).
-record(dependent_type_constraint, -record(dependent_type_constraint,
{ named_args_t :: utype() { named_args_t :: named_args_t()
, named_args :: [aeso_syntax:arg_expr()] , named_args :: [aeso_syntax:arg_expr()]
, general_type :: utype() , general_type :: utype()
, specialized_type :: utype() , specialized_type :: utype()
@ -1392,11 +1392,11 @@ infer_expr(Env, {app, Ann, Fun, Args0} = App) ->
When = {infer_app, Fun, NamedArgs1, Args, FunType, ArgTypes}, When = {infer_app, Fun, NamedArgs1, Args, FunType, ArgTypes},
unify(Env, FunType, {fun_t, [], NamedArgsVar, ArgTypes, GeneralResultType}, When), unify(Env, FunType, {fun_t, [], NamedArgsVar, ArgTypes, GeneralResultType}, When),
add_named_argument_constraint( add_named_argument_constraint(
[#dependent_type_constraint{ named_args_t = NamedArgsVar, #dependent_type_constraint{ named_args_t = NamedArgsVar,
named_args = NamedArgs1, named_args = NamedArgs1,
general_type = GeneralResultType, general_type = GeneralResultType,
specialized_type = ResultType, specialized_type = ResultType,
context = {check_return, App} }]), context = {check_return, App} }),
{typed, Ann, {app, Ann, NewFun, NamedArgs1 ++ NewArgs}, dereference(ResultType)} {typed, Ann, {app, Ann, NewFun, NamedArgs1 ++ NewArgs}, dereference(ResultType)}
end; end;
infer_expr(Env, {'if', Attrs, Cond, Then, Else}) -> infer_expr(Env, {'if', Attrs, Cond, Then, Else}) ->