From 296b2a4bb047c8f1b19ae6a722266e75f8429a6f Mon Sep 17 00:00:00 2001 From: Gaith Hallak Date: Fri, 21 Apr 2023 21:13:29 +0300 Subject: [PATCH] Remove duplicated record definition --- src/aeso_ast_infer_types.erl | 9 ++++++++- src/aeso_tc_errors.erl | 11 +++-------- src/aeso_tc_pp.erl | 11 +++-------- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/aeso_ast_infer_types.erl b/src/aeso_ast_infer_types.erl index 7caf2d8..a5fe4a3 100644 --- a/src/aeso_ast_infer_types.erl +++ b/src/aeso_ast_infer_types.erl @@ -18,7 +18,11 @@ , unfold_types_in_type/3 , switch_scope/2 , lookup_env1/4 - , get_env_namespace/1 %% TODO: Newly added + %% TODO: Newly added + , get_env_namespace/1 + , get_named_argument_constraint_name/1 + , get_named_argument_constraint_args/1 + , get_named_argument_constraint_type/1 ]). -include("aeso_utils.hrl"). @@ -185,6 +189,9 @@ pp_loc(A) -> aeso_tc_pp:pp_loc(A). %% -- New functions ---------------------------------------------------------- get_env_namespace(#env{namespace = Namespace}) -> Namespace. +get_named_argument_constraint_name(#named_argument_constraint{name = Name}) -> Name. +get_named_argument_constraint_args(#named_argument_constraint{args = Args}) -> Args. +get_named_argument_constraint_type(#named_argument_constraint{type = Type}) -> Type. %% -- Environment manipulation ----------------------------------------------- diff --git a/src/aeso_tc_errors.erl b/src/aeso_tc_errors.erl index 6442b1b..3663a87 100644 --- a/src/aeso_tc_errors.erl +++ b/src/aeso_tc_errors.erl @@ -8,13 +8,6 @@ , destroy_and_report_type_errors/1 ]). -%% -- Duplicated types ------------------------------------------------------- - --record(named_argument_constraint, - {args :: aeso_ast_infer_types:named_args_t(), %% TODO: Unexported type - name :: aeso_syntax:id(), - type :: aeso_ast_infer_types:utype()}). %% TODO: Unexported type - %% -- Moved functions -------------------------------------------------------- name(A) -> aeso_tc_name_manip:name(A). @@ -217,7 +210,9 @@ mk_error({bad_named_argument, Args, Name}) -> [ io_lib:format("\n - `~s`", [pp_typed("", Arg, Type)]) || {named_arg_t, _, Arg, Type, _} <- Args ]]), mk_t_err(pos(Name), Msg); -mk_error({unsolved_named_argument_constraint, #named_argument_constraint{name = Name, type = Type}}) -> +mk_error({unsolved_named_argument_constraint, C}) -> + Name = aeso_ast_infer_types:get_named_argument_constraint_name(C), + Type = aeso_ast_infer_types:get_named_argument_constraint_type(C), Msg = io_lib:format("Named argument ~s supplied to function with unknown named arguments.", [pp_typed("", Name, Type)]), mk_t_err(pos(Name), Msg); diff --git a/src/aeso_tc_pp.erl b/src/aeso_tc_pp.erl index c87871f..18c0219 100644 --- a/src/aeso_tc_pp.erl +++ b/src/aeso_tc_pp.erl @@ -16,11 +16,6 @@ | {var_args, aeso_syntax:ann(), aeso_syntax:expr()} | {proj, aeso_syntax:ann(), aeso_syntax:expr(), aeso_syntax:id()}. --record(named_argument_constraint, - {args :: aeso_ast_infer_types:named_args_t(), %% TODO: Unexported type - name :: aeso_syntax:id(), - type :: aeso_ast_infer_types:utype()}). %% TODO: Unexported type - %% -- Moved functions -------------------------------------------------------- pos(A) -> aeso_tc_ann_manip:pos(A). @@ -137,10 +132,10 @@ pp_when({list_comp, BindExpr, Inferred0, Expected0}) -> io_lib:format("when checking rvalue of list comprehension binding `~s` against type `~s`", [pp_typed("", BindExpr, Inferred), pp_type(Expected)])}; pp_when({check_named_arg_constraint, C}) -> - {id, _, Name} = Arg = C#named_argument_constraint.name, - [Type | _] = [ Type || {named_arg_t, _, {id, _, Name1}, Type, _} <- C#named_argument_constraint.args, Name1 == Name ], + {id, _, Name} = Arg = aeso_ast_infer_types:get_named_argument_constraint_name(C), + [Type | _] = [ Type || {named_arg_t, _, {id, _, Name1}, Type, _} <- aeso_ast_infer_types:get_named_argument_constraint_args(C), Name1 == Name ], Err = io_lib:format("when checking named argument `~s` against inferred type `~s`", - [pp_typed("", Arg, Type), pp_type(C#named_argument_constraint.type)]), + [pp_typed("", Arg, Type), pp_type(aeso_ast_infer_types:get_named_argument_constraint_type(C))]), {pos(Arg), Err}; pp_when({checking_init_args, Ann, Con0, ArgTypes0}) -> Con = aeso_type_utils:instantiate(Con0),