From 0782f439f5095b910fc19c7a01ad29ff9a2be372 Mon Sep 17 00:00:00 2001 From: Gaith Hallak Date: Wed, 18 Aug 2021 11:43:33 +0300 Subject: [PATCH] Handle name collisions --- src/aeso_ast_infer_types.erl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/aeso_ast_infer_types.erl b/src/aeso_ast_infer_types.erl index b46f279..f1397ca 100644 --- a/src/aeso_ast_infer_types.erl +++ b/src/aeso_ast_infer_types.erl @@ -317,13 +317,13 @@ bind_contract({Contract, Ann, Id, Contents}, Env) -spec possible_scopes(env(), qname()) -> [qname()]. possible_scopes(#env{ namespace = Current, used_namespaces = UsedNamespaces }, Name) -> Qual = lists:droplast(Name), - NewQual = case lists:keyfind(Qual, 2, UsedNamespaces) of - {Namespace, _} -> - Namespace; - false -> - Qual - end, - Ret = [ lists:sublist(Current, I) ++ NewQual || I <- lists:seq(0, length(Current)) ] ++ [ Namespace ++ NewQual || {Namespace, none} <- UsedNamespaces ], + NewQuals = case lists:filter(fun(X) -> element(2, X) == Qual end, UsedNamespaces) of + [] -> + [Qual]; + Namespaces -> + lists:map(fun(X) -> element(1, X) end, Namespaces) + end, + Ret = [ lists:sublist(Current, I) ++ Q || I <- lists:seq(0, length(Current)), Q <- NewQuals ] ++ [ Namespace ++ Q || {Namespace, none} <- UsedNamespaces, Q <- NewQuals ], Ret. -spec lookup_type(env(), type_id()) -> false | {qname(), type_info()}.