Skip to content

Commit 001a5eb

Browse files
committed
Add line numbers to deprecated imports
1 parent 6085ed0 commit 001a5eb

File tree

5 files changed

+32
-7
lines changed

5 files changed

+32
-7
lines changed

lib/elixir/lib/io.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ defmodule IO do
317317
@spec warn(chardata | String.Chars.t(), Exception.stacktrace()) :: :ok
318318
def warn(message, []) do
319319
message = [to_chardata(message), ?\n]
320-
:elixir_errors.io_warn(nil, nil, message, message)
320+
:elixir_errors.io_warn(0, nil, message, message)
321321
end
322322

323323
def warn(message, [{_, _, _, opts} | _] = stacktrace) do
@@ -327,7 +327,7 @@ defmodule IO do
327327
file = opts[:file]
328328

329329
:elixir_errors.io_warn(
330-
line,
330+
line || 0,
331331
file && List.to_string(file),
332332
message,
333333
[message, ?\n, " ", formatted_trace, ?\n]

lib/elixir/lib/module/checker.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ defmodule Module.Checker do
231231

232232
defp warn(meta, state, warning) do
233233
{fun, arity} = state.function
234-
location = {state.file, meta[:line], {state.module, fun, arity}}
234+
location = {state.file, meta[:line] || 0, {state.module, fun, arity}}
235235
%{state | warnings: [{__MODULE__, warning, location} | state.warnings]}
236236
end
237237

@@ -306,7 +306,7 @@ defmodule Module.Checker do
306306

307307
defp format_location({file, line, {module, fun, arity}}) do
308308
file = Path.relative_to_cwd(file)
309-
line = if line, do: [Integer.to_string(line), ": "], else: []
309+
line = if line > 0, do: [Integer.to_string(line), ": "], else: []
310310
mfa = Exception.format_mfa(module, fun, arity)
311311
[" ", file, ?:, line, mfa, ?\n]
312312
end

lib/elixir/src/elixir_dispatch.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ dispatch_import(Meta, Name, Args, E, Callback) ->
9292
{ok, Receiver, Quoted} ->
9393
expand_quoted(Meta, Receiver, Name, Arity, Quoted, E);
9494
{ok, Receiver, NewName, NewArgs} ->
95-
elixir_expand:expand({{'.', [], [Receiver, NewName]}, Meta, NewArgs}, E);
95+
elixir_expand:expand({{'.', Meta, [Receiver, NewName]}, Meta, NewArgs}, E);
9696
error ->
9797
Callback()
9898
end.

lib/elixir/test/elixir/kernel/expansion_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -654,8 +654,8 @@ defmodule Kernel.ExpansionTest do
654654
expand(quote(do: [1] ++ 2 ++ [3] = [1, 2, 3]))
655655
end
656656

657-
assert {:=, _, [-1, {{:., [], [:erlang, :-]}, _, [1]}]} = expand(quote(do: -1 = -1))
658-
assert {:=, _, [1, {{:., [], [:erlang, :+]}, _, [1]}]} = expand(quote(do: +1 = +1))
657+
assert {:=, _, [-1, {{:., _, [:erlang, :-]}, _, [1]}]} = expand(quote(do: -1 = -1))
658+
assert {:=, _, [1, {{:., _, [:erlang, :+]}, _, [1]}]} = expand(quote(do: +1 = +1))
659659

660660
assert {:=, _, [[{:|, _, [1, [{:|, _, [2, 3]}]]}], [1, 2, 3]]} =
661661
expand(quote(do: [1] ++ [2] ++ 3 = [1, 2, 3]))

lib/elixir/test/elixir/module/checker_test.exs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,31 @@ defmodule Module.CheckerTest do
639639
assert_warnings(files, warning)
640640
end
641641

642+
test "reports imported functions" do
643+
files = %{
644+
"a.ex" => """
645+
defmodule A do
646+
@deprecated "oops"
647+
def a, do: :ok
648+
end
649+
""",
650+
"b.ex" => """
651+
defmodule B do
652+
import A
653+
def b, do: a()
654+
end
655+
"""
656+
}
657+
658+
warning = """
659+
warning: A.a/0 is deprecated. oops
660+
b.ex:3: B.b/0
661+
662+
"""
663+
664+
assert_warnings(files, warning)
665+
end
666+
642667
test "reports structs" do
643668
files = %{
644669
"a.ex" => """

0 commit comments

Comments
 (0)