Skip to content

Commit e9be638

Browse files
doorganjosevalim
authored andcommitted
Fix normalizer not preserving user choice on module attribute lists (#11397)
1 parent 2765e0f commit e9be638

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

lib/elixir/lib/code/normalizer.ex

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,18 @@ defmodule Code.Normalizer do
197197
end
198198
end
199199

200+
# Module attributes
201+
defp do_normalize({:@, meta, [{name, name_meta, [value]}]}, state) do
202+
value =
203+
if is_list(value) do
204+
normalize_kw_args(value, state, false)
205+
else
206+
do_normalize(value, state)
207+
end
208+
209+
{:@, meta, [{name, name_meta, [value]}]}
210+
end
211+
200212
# Calls
201213
defp do_normalize({_, _, args} = quoted, state) when is_list(args) do
202214
normalize_call(quoted, state)

lib/elixir/test/elixir/code_normalizer/formatted_ast_test.exs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,18 @@ defmodule Code.Normalizer.FormatterASTTest do
352352
assert_same ~S"{:wrapped, 1, [opt1: true, opt2: false]}"
353353
assert_same ~S"{:unwrapped, 1, opt1: true, opt2: false}"
354354
end
355+
356+
test "on module attribute" do
357+
assert_same ~S"""
358+
@foo a: b,
359+
c: d
360+
"""
361+
362+
assert_same ~S"@foo [
363+
a: b,
364+
c: d
365+
]"
366+
end
355367
end
356368

357369
describe "preserves user choice on parenthesis" do

0 commit comments

Comments
 (0)