Handle name collisions
This commit is contained in:
parent
06dc68a7f2
commit
0782f439f5
@ -317,13 +317,13 @@ bind_contract({Contract, Ann, Id, Contents}, Env)
|
|||||||
-spec possible_scopes(env(), qname()) -> [qname()].
|
-spec possible_scopes(env(), qname()) -> [qname()].
|
||||||
possible_scopes(#env{ namespace = Current, used_namespaces = UsedNamespaces }, Name) ->
|
possible_scopes(#env{ namespace = Current, used_namespaces = UsedNamespaces }, Name) ->
|
||||||
Qual = lists:droplast(Name),
|
Qual = lists:droplast(Name),
|
||||||
NewQual = case lists:keyfind(Qual, 2, UsedNamespaces) of
|
NewQuals = case lists:filter(fun(X) -> element(2, X) == Qual end, UsedNamespaces) of
|
||||||
{Namespace, _} ->
|
[] ->
|
||||||
Namespace;
|
[Qual];
|
||||||
false ->
|
Namespaces ->
|
||||||
Qual
|
lists:map(fun(X) -> element(1, X) end, Namespaces)
|
||||||
end,
|
end,
|
||||||
Ret = [ lists:sublist(Current, I) ++ NewQual || I <- lists:seq(0, length(Current)) ] ++ [ Namespace ++ NewQual || {Namespace, none} <- UsedNamespaces ],
|
Ret = [ lists:sublist(Current, I) ++ Q || I <- lists:seq(0, length(Current)), Q <- NewQuals ] ++ [ Namespace ++ Q || {Namespace, none} <- UsedNamespaces, Q <- NewQuals ],
|
||||||
Ret.
|
Ret.
|
||||||
|
|
||||||
-spec lookup_type(env(), type_id()) -> false | {qname(), type_info()}.
|
-spec lookup_type(env(), type_id()) -> false | {qname(), type_info()}.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user