Skip to content

Commit ff4adca

Browse files
committed
Filter @compile debug_info when explicitly set to true
Closes #14567.
1 parent 954133d commit ff4adca

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

lib/elixir/src/elixir_erl.erl

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,7 @@ dynamic_form(#{module := Module, relative_file := RelativeFile,
182182
{Def, Defmacro, Macros, Exports, Functions} =
183183
split_definition(Definitions, Unreachable, Line, [], [], [], [], {[], []}),
184184

185-
FilteredOpts = lists:filter(fun(
186-
{no_warn_undefined, _}) -> false;
187-
(debug_info) -> false;
188-
(_) -> true
189-
end, Opts),
190-
185+
FilteredOpts = proplists:delete(debug_info, proplists:delete(no_warn_undefined, Opts)),
191186
Location = {elixir_utils:characters_to_list(RelativeFile), Line},
192187

193188
Prefix = [{attribute, Line, file, Location},

lib/elixir/test/elixir/module_test.exs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,17 @@ defmodule ModuleTest do
413413
assert map.module == ModuleCreateDebugInfo
414414
end
415415

416+
test "uses the debug_info chunk when explicitly set to true" do
417+
{:module, ModuleCreateDebugInfoTrue, binary, _} =
418+
Module.create(ModuleCreateDebugInfoTrue, quote(do: @compile({:debug_info, true})), __ENV__)
419+
420+
{:ok, {_, [debug_info: {:debug_info_v1, backend, data}]}} =
421+
:beam_lib.chunks(binary, [:debug_info])
422+
423+
{:ok, map} = backend.debug_info(:elixir_v1, ModuleCreateDebugInfoTrue, data, [])
424+
assert map.module == ModuleCreateDebugInfoTrue
425+
end
426+
416427
test "uses the debug_info chunk even if debug_info is set to false" do
417428
{:module, ModuleCreateNoDebugInfo, binary, _} =
418429
Module.create(ModuleCreateNoDebugInfo, quote(do: @compile({:debug_info, false})), __ENV__)

0 commit comments

Comments
 (0)