Skip to content

Commit 8c2237f

Browse files
committed
Handle in memory modules in Xref.calls, closes #10502
1 parent a5e9c39 commit 8c2237f

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

lib/mix/lib/mix/tasks/xref.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,8 @@ defmodule Mix.Tasks.Xref do
252252
{:ok, {_, [debug_info: debug_info]}} <- :beam_lib.chunks(path, [:debug_info]),
253253
{:debug_info_v1, backend, data} <- debug_info,
254254
{:ok, %{definitions: defs}} <- backend.debug_info(:elixir_v1, module, data, []),
255-
do: walk_definitions(module, source, defs)
255+
do: walk_definitions(module, source, defs),
256+
else: (_ -> [])
256257
end
257258

258259
defp walk_definitions(module, file, definitions) do

lib/mix/test/mix/tasks/xref_test.exs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,29 @@ defmodule Mix.Tasks.XrefTest do
6969
assert_all_calls(files, output)
7070
end
7171

72-
defp assert_all_calls(files, expected) do
72+
test "returns empty on cover compiled modules" do
73+
files = %{
74+
"lib/a.ex" => """
75+
defmodule A do
76+
def a, do: A.a()
77+
end
78+
"""
79+
}
80+
81+
assert_all_calls(files, [], fn ->
82+
:cover.start()
83+
:cover.compile_beam_directory(to_charlist(Mix.Project.compile_path()))
84+
end)
85+
after
86+
:cover.stop()
87+
end
88+
89+
defp assert_all_calls(files, expected, after_compile \\ fn -> :ok end) do
7390
in_fixture("no_mixfile", fn ->
7491
generate_files(files)
7592

7693
Mix.Task.run("compile")
94+
after_compile.()
7795
assert Enum.sort(Mix.Tasks.Xref.calls()) == Enum.sort(expected)
7896
end)
7997
end

0 commit comments

Comments
 (0)