Skip to content

Commit 946fb4a

Browse files
committed
fix: Map/Keyword.merge([one: :key]) with explicit list
1 parent 3427264 commit 946fb4a

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

lib/style/single_node.ex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,11 @@ defmodule Styler.Style.SingleNode do
176176
defp style({:|>, pm, [lhs, {{:., dm, [{_, _, [unquote(m)]} = module, :merge]}, m, [[{key, value}]]}]}),
177177
do: {:|>, pm, [lhs, {{:., dm, [module, :put]}, m, [key, value]}]}
178178

179+
# lhs |> Map.merge([key: value]) => lhs |> Map.put(:key, value)
180+
defp style(
181+
{:|>, pm, [lhs, {{:., dm, [{_, _, [unquote(m)]} = module, :merge]}, m, [{:__block__, _, [[{key, value}]]}]}]}
182+
), do: {:|>, pm, [lhs, {{:., dm, [module, :put]}, m, [key, value]}]}
183+
179184
# Map.merge(foo, %{one_key: :bar}) => Map.put(foo, :one_key, :bar)
180185
defp style({{:., dm, [{_, _, [unquote(m)]} = module, :merge]}, m, [lhs, {:%{}, _, [{key, value}]}]}),
181186
do: {{:., dm, [module, :put]}, m, [lhs, key, value]}
@@ -184,6 +189,10 @@ defmodule Styler.Style.SingleNode do
184189
defp style({{:., dm, [{_, _, [unquote(m)]} = module, :merge]}, m, [lhs, [{key, value}]]}),
185190
do: {{:., dm, [module, :put]}, m, [lhs, key, value]}
186191

192+
# Map.merge(foo, [one_key: :bar]) => Map.put(foo, :one_key, :bar)
193+
defp style({{:., dm, [{_, _, [unquote(m)]} = module, :merge]}, m, [lhs, {:__block__, _, [[{key, value}]]}]}),
194+
do: {{:., dm, [module, :put]}, m, [lhs, key, value]}
195+
187196
# (lhs |>) Map.drop([key]) => Map.delete(key)
188197
defp style({{:., dm, [{_, _, [unquote(m)]} = module, :drop]}, m, [{:__block__, _, [[{op, _, _} = key]]}]})
189198
when op != :|, do: {{:., dm, [module, :delete]}, m, [key]}

test/style/single_node_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,12 @@ defmodule Styler.Style.SingleNodeTest do
9595
test "in a pipe" do
9696
for module <- ~w(Map Keyword) do
9797
assert_style("foo |> #{module}.merge(%{one_key: :bar}) |> bop()", "foo |> #{module}.put(:one_key, :bar) |> bop()")
98+
assert_style("foo |> #{module}.merge([one_key: :bar]) |> bop()", "foo |> #{module}.put(:one_key, :bar) |> bop()")
99+
assert_style("foo |> #{module}.merge(one_key: :bar) |> bop()", "foo |> #{module}.put(:one_key, :bar) |> bop()")
100+
101+
assert_style("#{module}.merge(foo, %{one_key: :bar})", "#{module}.put(foo, :one_key, :bar)")
102+
assert_style("#{module}.merge(foo, [one_key: :bar])", "#{module}.put(foo, :one_key, :bar)")
103+
assert_style("#{module}.merge(foo, one_key: :bar)", "#{module}.put(foo, :one_key, :bar)")
98104
end
99105
end
100106

0 commit comments

Comments
 (0)