Skip to content

Commit b4b1947

Browse files
author
José Valim
committed
Ensure eval_quoted properly resets last definition, closes #8261
Signed-off-by: José Valim <[email protected]>
1 parent a33d911 commit b4b1947

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

lib/elixir/src/elixir_def.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ setup(DataTables) ->
1111
ok.
1212

1313
reset_last({DataSet, _DataBag}) ->
14-
ets:insert(DataSet, {?last_def, []});
14+
ets:insert(DataSet, {?last_def, none});
1515

1616
reset_last(Module) when is_atom(Module) ->
1717
reset_last(elixir_module:data_tables(Module)).

lib/elixir/test/elixir/module_test.exs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,18 @@ defmodule ModuleTest do
8585
assert eval_quoted_info() == {ModuleTest, "sample.ex", 13}
8686
end
8787

88-
test "retrieves line from macros" do
88+
test "resets last definition information on eval" do
89+
# This should not emit any warning
90+
defmodule LastDefinition do
91+
def foo(0), do: 0
92+
Module.eval_quoted(__ENV__, quote do
93+
def bar, do: :ok
94+
end)
95+
def foo(1), do: 1
96+
end
97+
end
98+
99+
test "retrieves line from use callsite" do
89100
assert ModuleTest.ToUse.line() == 40
90101
end
91102

0 commit comments

Comments
 (0)