Skip to content

Commit fd3474e

Browse files
committed
add a regression test for what our cleanup fixed
1 parent 1e328ad commit fd3474e

File tree

2 files changed

+11
-9
lines changed

2 files changed

+11
-9
lines changed

lib/style/blocks.ex

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,16 @@ defmodule Styler.Style.Blocks do
7979
{postroll, reversed_clauses} = Enum.split_while(reversed_clauses, &(not left_arrow?(&1)))
8080
[{:<-, _, [lhs, rhs]} = _final_clause | rest] = reversed_clauses
8181

82-
# Credo.Check.Refactor.RedundantWithClauseResult
82+
# drop singleton identity else clauses like `else foo -> foo end`
83+
elses =
84+
case elses do
85+
[{{_, _, [:else]}, [{:->, _, [[left], right]}]}] -> if nodes_equivalent?(left, right), do: [], else: elses
86+
_ -> elses
87+
end
88+
8389
{reversed_clauses, do_body} =
8490
cond do
91+
# Credo.Check.Refactor.RedundantWithClauseResult
8592
Enum.empty?(postroll) and Enum.empty?(elses) and nodes_equivalent?(lhs, do_body) ->
8693
{rest, rhs}
8794

@@ -95,14 +102,7 @@ defmodule Styler.Style.Blocks do
95102
{reversed_clauses, do_body}
96103
end
97104

98-
# drop singleton identity else clauses like `else foo -> foo end`
99-
new_elses =
100-
case elses do
101-
[{{_, _, [:else]}, [{:->, _, [[left], right]}]}] -> if nodes_equivalent?(left, right), do: [], else: elses
102-
_ -> elses
103-
end
104-
105-
children = Enum.reverse(reversed_clauses, [[{do_block, do_body} | new_elses]])
105+
children = Enum.reverse(reversed_clauses, [[{do_block, do_body} | elses]])
106106

107107
if Enum.any?(preroll),
108108
do: {:__block__, m, preroll ++ [{:with, m, children}]},

test/style/blocks_test.exs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ defmodule Styler.Style.BlocksTest do
211211
with {:ok, a} <- foo(),
212212
{:ok, b} <- bar(a) do
213213
{:ok, b}
214+
else
215+
error -> error
214216
end
215217
""",
216218
"""

0 commit comments

Comments
 (0)