Skip to content

Commit d11b41f

Browse files
authored
Revert alias shadowing warning due to false positives (#13568)
* Revert "Fix false positive with nested shadowed alias (#13564)" This reverts commit 8dc94db. * Revert "Warn on unused shadowed aliases (#13550)" This reverts commit d1b3063.
1 parent 93a1dba commit d11b41f

File tree

6 files changed

+12
-68
lines changed

6 files changed

+12
-68
lines changed

lib/elixir/lib/kernel/lexical_tracker.ex

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ defmodule Kernel.LexicalTracker do
4040
end
4141

4242
@doc false
43-
def add_alias(pid, module, meta, warn, function?) when is_atom(module) do
44-
:gen_server.cast(pid, {:add_alias, module, meta, warn, function?})
43+
def add_alias(pid, module, meta, warn) when is_atom(module) do
44+
:gen_server.cast(pid, {:add_alias, module, meta, warn})
4545
end
4646

4747
@doc false
@@ -123,14 +123,7 @@ defmodule Kernel.LexicalTracker do
123123

124124
@doc false
125125
def handle_call(:unused_aliases, _from, state) do
126-
unused_aliases =
127-
Enum.map(state.aliases, fn
128-
{{:shadowed, module}, meta} -> {module, meta}
129-
{module, meta} when is_atom(module) -> {module, meta}
130-
end)
131-
|> Enum.sort()
132-
133-
{:reply, unused_aliases, state}
126+
{:reply, Enum.sort(state.aliases), state}
134127
end
135128

136129
def handle_call(:unused_imports, _from, state) do
@@ -225,18 +218,8 @@ defmodule Kernel.LexicalTracker do
225218
end
226219
end
227220

228-
def handle_cast({:add_alias, module, meta, warn, function?}, state) do
221+
def handle_cast({:add_alias, module, meta, warn}, state) do
229222
if warn do
230-
state =
231-
case state do
232-
# we only track shadowed unused aliases at the top-level
233-
%{aliases: %{^module => meta}} when not function? ->
234-
put_in(state.aliases[{:shadowed, module}], meta)
235-
236-
_ ->
237-
state
238-
end
239-
240223
{:noreply, put_in(state.aliases[module], meta)}
241224
else
242225
{:noreply, state}

lib/elixir/lib/macro/env.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ defmodule Macro.Env do
447447
448448
## Examples
449449
450-
iex> alias List, as: MyList, warn: false
450+
iex> alias List, as: MyList
451451
iex> Macro.Env.expand_alias(__ENV__, [], [:MyList])
452452
{:alias, List}
453453
iex> Macro.Env.expand_alias(__ENV__, [], [:MyList, :Nested])
@@ -456,7 +456,7 @@ defmodule Macro.Env do
456456
If there is no alias or the alias starts with `Elixir.`
457457
(which disables aliasing), then `:error` is returned:
458458
459-
iex> alias List, as: MyList, warn: false
459+
iex> alias List, as: MyList
460460
iex> Macro.Env.expand_alias(__ENV__, [], [:Elixir, MyList])
461461
:error
462462
iex> Macro.Env.expand_alias(__ENV__, [], [:AnotherList])

lib/elixir/src/elixir_lexical.erl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ trace({import, Meta, Module, Opts}, #{lexical_tracker := Pid}) ->
4040

4141
?tracker:add_import(Pid, Module, Only, Meta, Imported and should_warn(Meta, Opts)),
4242
ok;
43-
trace({alias, Meta, _Old, New, Opts}, #{lexical_tracker := Pid, function := Function}) ->
44-
?tracker:add_alias(Pid, New, Meta, should_warn(Meta, Opts), Function /= nil),
43+
trace({alias, Meta, _Old, New, Opts}, #{lexical_tracker := Pid}) ->
44+
?tracker:add_alias(Pid, New, Meta, should_warn(Meta, Opts)),
4545
ok;
4646
trace({alias_expansion, _Meta, Lookup, _Result}, #{lexical_tracker := Pid}) ->
4747
?tracker:alias_dispatch(Pid, Lookup),

lib/elixir/test/elixir/kernel/alias_test.exs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,6 @@ defmodule Kernel.AliasTest do
3434
assert Billing == :"Elixir.MyApp.Billing"
3535
end
3636

37-
test "overriding parent alias with child alias" do
38-
alias MyApp.Billing
39-
alias Billing.Billing
40-
assert Billing == :"Elixir.MyApp.Billing.Billing"
41-
end
42-
4337
test "lexical" do
4438
if true_fun() do
4539
alias OMG, as: List, warn: false

lib/elixir/test/elixir/kernel/lexical_tracker_test.exs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ defmodule Kernel.LexicalTrackerTest do
5252
end
5353

5454
test "can add aliases", config do
55-
D.add_alias(config[:pid], String, 1, true, false)
55+
D.add_alias(config[:pid], String, 1, true)
5656
D.alias_dispatch(config[:pid], String)
5757
assert D.references(config[:pid]) == {[], [], [], []}
5858
end
@@ -93,18 +93,18 @@ defmodule Kernel.LexicalTrackerTest do
9393
end
9494

9595
test "unused aliases", config do
96-
D.add_alias(config[:pid], String, 1, true, false)
96+
D.add_alias(config[:pid], String, 1, true)
9797
assert D.collect_unused_aliases(config[:pid]) == [{String, 1}]
9898
end
9999

100100
test "used aliases are not unused", config do
101-
D.add_alias(config[:pid], String, 1, true, false)
101+
D.add_alias(config[:pid], String, 1, true)
102102
D.alias_dispatch(config[:pid], String)
103103
assert D.collect_unused_aliases(config[:pid]) == []
104104
end
105105

106106
test "aliases with no warn are not unused", config do
107-
D.add_alias(config[:pid], String, 1, false, false)
107+
D.add_alias(config[:pid], String, 1, false)
108108
assert D.collect_unused_aliases(config[:pid]) == []
109109
end
110110

lib/elixir/test/elixir/kernel/warning_test.exs

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -894,39 +894,6 @@ defmodule Kernel.WarningTest do
894894
purge(Sample)
895895
end
896896

897-
test "unused alias due to shadowing" do
898-
assert_warn_compile(
899-
["nofile:2:3", "unused alias Baz"],
900-
"""
901-
defmodule Sample do
902-
alias Foo.Baz
903-
alias Bar.Baz
904-
905-
def baz, do: Baz
906-
end
907-
"""
908-
)
909-
after
910-
purge(Sample)
911-
end
912-
913-
test "does not warn when shadowing alias in nested block" do
914-
assert capture_compile("""
915-
defmodule Sample do
916-
alias Foo.Baz
917-
918-
def foo do
919-
alias Bar.Baz
920-
Baz
921-
end
922-
923-
def baz, do: Baz
924-
end
925-
""") == ""
926-
after
927-
purge(Sample)
928-
end
929-
930897
test "unused inside dynamic module" do
931898
import List, only: [flatten: 1], warn: false
932899

0 commit comments

Comments
 (0)