Skip to content

Commit cf5762a

Browse files
committed
Use keyword syntax by default in tuple formatting
1 parent fab158c commit cf5762a

File tree

2 files changed

+12
-14
lines changed

2 files changed

+12
-14
lines changed

lib/elixir/lib/code/normalizer.ex

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -186,13 +186,12 @@ defmodule Code.Normalizer do
186186
defp do_normalize({:{}, meta, args} = quoted, state) do
187187
{last_arg, args} = List.pop_at(args, -1)
188188

189-
with [{{:__block__, key_meta, _}, _} | _] <- last_arg, :keyword <- key_meta[:format] do
190-
args = normalize_kw_args(args, state)
191-
kw_list = normalize_kw_args(last_arg, state)
189+
if args != [] and match?([_ | _], last_arg) and keyword?(last_arg) do
190+
args = normalize_args(args, state)
191+
kw_list = normalize_kw_args(last_arg, state, true)
192192
{:{}, meta, args ++ kw_list}
193193
else
194-
_ ->
195-
normalize_call(quoted, state)
194+
normalize_call(quoted, state)
196195
end
197196
end
198197

@@ -246,11 +245,10 @@ defmodule Code.Normalizer do
246245
meta = patch_meta_line(meta, state.parent_meta)
247246
state = %{state | parent_meta: meta}
248247

249-
with [{{:__block__, key_meta, _}, _} | _] <- right, :keyword <- key_meta[:format] do
250-
{:__block__, meta, [{do_normalize(left, state), normalize_kw_args(right, state)}]}
248+
if match?([_ | _], right) and keyword?(right) do
249+
{:__block__, meta, [{do_normalize(left, state), normalize_kw_args(right, state, true)}]}
251250
else
252-
_ ->
253-
{:__block__, meta, [{do_normalize(left, state), do_normalize(right, state)}]}
251+
{:__block__, meta, [{do_normalize(left, state), do_normalize(right, state)}]}
254252
end
255253
end
256254

@@ -282,7 +280,7 @@ defmodule Code.Normalizer do
282280
meta
283281
end
284282

285-
{:__block__, meta, [normalize_kw_args(list, state)]}
283+
{:__block__, meta, [normalize_kw_args(list, state, false)]}
286284
end
287285
end
288286

@@ -402,7 +400,7 @@ defmodule Code.Normalizer do
402400
end
403401

404402
defp normalize_map_args(args, state) do
405-
Enum.map(normalize_kw_args(args, state), fn
403+
Enum.map(normalize_kw_args(args, state, false), fn
406404
{:__block__, _, [{_, _} = pair]} -> pair
407405
pair -> pair
408406
end)
@@ -435,7 +433,7 @@ defmodule Code.Normalizer do
435433
{form, meta, leading_args ++ [kw_blocks]}
436434
end
437435

438-
defp normalize_kw_args(elems, state, keyword? \\ false)
436+
defp normalize_kw_args(elems, state, keyword?)
439437

440438
defp normalize_kw_args(
441439
[{{:__block__, key_meta, [key]}, value} = first | rest] = current,

lib/elixir/test/elixir/code_normalizer/quoted_ast_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ defmodule Code.Normalizer.QuotedASTTest do
150150
assert quoted_to_string(quote do: {1, 2}) == "{1, 2}"
151151
assert quoted_to_string(quote do: {1}) == "{1}"
152152
assert quoted_to_string(quote do: {1, 2, 3}) == "{1, 2, 3}"
153-
assert quoted_to_string(quote do: {1, 2, 3, foo: :bar}) == "{1, 2, 3, [foo: :bar]}"
153+
assert quoted_to_string(quote do: {1, 2, 3, foo: :bar}) == "{1, 2, 3, foo: :bar}"
154154
end
155155

156156
test "tuple call" do
@@ -536,7 +536,7 @@ defmodule Code.Normalizer.QuotedASTTest do
536536

537537
assert quoted_to_string(quote(do: {[]})) == "{[]}"
538538
assert quoted_to_string(quote(do: {[a: b]})) == "{[a: b]}"
539-
assert quoted_to_string(quote(do: {x, a: b})) == "{x, [a: b]}"
539+
assert quoted_to_string(quote(do: {x, a: b})) == "{x, a: b}"
540540
assert quoted_to_string(quote(do: foo(else: a))) == "foo(else: a)"
541541
assert quoted_to_string(quote(do: foo(catch: a))) == "foo(catch: a)"
542542
assert quoted_to_string(quote(do: foo |> [bar: :baz])) == "foo |> [bar: :baz]"

0 commit comments

Comments
 (0)