From 96d9509b4439e0e8eff5b32b2e5de61d865590c4 Mon Sep 17 00:00:00 2001 From: Gaith Hallak Date: Fri, 22 Apr 2022 17:05:21 +0400 Subject: [PATCH] Compare named args in fun_t --- src/aeso_ast_infer_types.erl | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/aeso_ast_infer_types.erl b/src/aeso_ast_infer_types.erl index 875cf7e..60cdb77 100644 --- a/src/aeso_ast_infer_types.erl +++ b/src/aeso_ast_infer_types.erl @@ -937,9 +937,10 @@ compare_types(Types1, Types2) when is_list(Types1) andalso is_list(Types2) -> length(Types1) == length(Types2) andalso lists:all(fun({T1, T2}) -> compare_types(T1, T2) end, lists:zip(Types1, Types2)); -compare_types({fun_t, _, _, Types1, RetType1}, {fun_t, _, _, Types2, RetType2}) -> - % TODO: what about named_args_t and var_args? - compare_types(RetType1, RetType2) andalso compare_types(Types1, Types2); +compare_types({fun_t, _, NamedArgs1, Types1, RetType1}, {fun_t, _, NamedArgs2, Types2, RetType2}) -> + compare_types(NamedArgs1, NamedArgs2) andalso + compare_types(RetType1, RetType2) andalso + compare_types(Types1, Types2); compare_types({app_t, _, Type1, ArgsTypes1}, {app_t, _, Type2, ArgsTypes2}) -> compare_types(Type1, Type2) andalso compare_types(ArgsTypes1, ArgsTypes2); compare_types({tuple_t, _, Types1}, {tuple_t, _, Types2}) -> @@ -952,6 +953,8 @@ compare_types(T1 = {Id, _, Type}, {Id, _, Type}) when ?is_type_id(T1) -> true; compare_types({if_t, _, {id, _, Id}, Ta1, Tb1}, {if_t, _, {id, _, Id}, Ta2, Tb2}) -> compare_types(Ta1, Ta2) andalso compare_types(Tb1, Tb2); +compare_types({named_arg_t, _, {id, _, Name}, T1, _}, {named_arg_t, _, {id, _, Name}, T2, _}) -> + compare_types(T1, T2); compare_types(_, _) -> false.