Skip to content

Commit 5c33633

Browse files
committed
refactor: using new AST tech on inline variable
1 parent 1b7f227 commit 5c33633

File tree

1 file changed

+6
-17
lines changed

1 file changed

+6
-17
lines changed

lib/refactorex/refactor/variable/inline_variable.ex

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,14 @@ defmodule Refactorex.Refactor.Variable.InlineVariable do
2727
end
2828

2929
def refactor(zipper, _) do
30-
%{node: {:=, _, [declaration, value]} = assignment} = Z.up(zipper)
30+
%{node: {:=, _, [declaration, value]}} = parent = Z.up(zipper)
3131
[_ | usages] = Variable.find_all_references(zipper, declaration)
3232

33-
zipper
34-
|> Z.top()
35-
|> Z.traverse(fn
36-
%{node: ^assignment} = zipper ->
37-
if replace_assignment_by_value?(zipper),
38-
do: Z.replace(zipper, value),
39-
else: Z.remove(zipper)
40-
41-
%{node: {_, _, nil} = node} = zipper ->
42-
if Enum.member?(usages, node),
43-
do: Z.replace(zipper, value),
44-
else: zipper
45-
46-
zipper ->
47-
zipper
48-
end)
33+
if(replace_assignment_by_value?(parent),
34+
do: Z.replace(parent, value),
35+
else: Z.remove(parent)
36+
)
37+
|> AST.replace_nodes(usages, value)
4938
|> AST.go_to_node(value)
5039
end
5140

0 commit comments

Comments
 (0)