Skip to content

Commit 6aaa4bb

Browse files
committed
Do not warn in match assertion if variable is reused in pattern
Having the folowing assertion `assert {var, var} = {1, 1}`, the code produced previously: [var] = case(right) do {var, var} -> #... [var] _ -> #... end And with the patch: [var, var] = case(right) do {var, var} -> #... [var, var] _ -> #... end
1 parent a6b80a1 commit 6aaa4bb

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

lib/ex_unit/lib/ex_unit/assertions.ex

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -401,20 +401,19 @@ defmodule ExUnit.Assertions do
401401
end
402402

403403
defp collect_vars_from_pattern(expr) do
404-
{_, vars} =
405-
Macro.prewalk(expr, [], fn
406-
{:::, _, [left, _]}, acc ->
407-
{[left], acc}
408-
{skip, _, [_]}, acc when skip in [:^, :@] ->
409-
{:ok, acc}
410-
{:_, _, context}, acc when is_atom(context) ->
411-
{:ok, acc}
412-
{name, _, context}, acc when is_atom(name) and is_atom(context) ->
413-
{:ok, [{name, [generated: true], context}|acc]}
414-
node, acc ->
415-
{node, acc}
416-
end)
417-
Enum.uniq(vars)
404+
Macro.prewalk(expr, [], fn
405+
{:::, _, [left, _]}, acc ->
406+
{[left], acc}
407+
{skip, _, [_]}, acc when skip in [:^, :@] ->
408+
{:ok, acc}
409+
{:_, _, context}, acc when is_atom(context) ->
410+
{:ok, acc}
411+
{name, _, context}, acc when is_atom(name) and is_atom(context) ->
412+
{:ok, [{name, [generated: true], context}|acc]}
413+
node, acc ->
414+
{node, acc}
415+
end)
416+
|> elem(1)
418417
end
419418

420419
defp no_warning({name, meta, args}) do

0 commit comments

Comments
 (0)