Skip to content

Commit 305ee00

Browse files
committed
; delimiting unless nodes
1 parent 6f135be commit 305ee00

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

lib/syntax_tree/translation/parser.rb

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1555,21 +1555,6 @@ def visit_massign(node)
15551555
# Visit a MethodAddBlock node.
15561556
def visit_method_add_block(node)
15571557
case node.call
1558-
when Break, Next, ReturnNode
1559-
type, arguments = block_children(node.block)
1560-
call = visit(node.call)
1561-
1562-
s(
1563-
call.type,
1564-
[
1565-
s(
1566-
type,
1567-
[*call.children, arguments, visit(node.block.bodystmt)],
1568-
nil
1569-
)
1570-
],
1571-
nil
1572-
)
15731558
when ARef, Super, ZSuper
15741559
type, arguments = block_children(node.block)
15751560

@@ -1578,7 +1563,10 @@ def visit_method_add_block(node)
15781563
[visit(node.call), arguments, visit(node.block.bodystmt)],
15791564
smap_collection(
15801565
srange_node(node.block.opening),
1581-
srange_length(node.block.end_char, node.block.opening.is_a?(Kw) ? -3 : -1),
1566+
srange_length(
1567+
node.block.end_char,
1568+
node.block.opening.is_a?(Kw) ? -3 : -1
1569+
),
15821570
srange_node(node)
15831571
)
15841572
)
@@ -2439,9 +2427,24 @@ def visit_unless(node)
24392427
srange_node(node)
24402428
)
24412429
else
2430+
begin_start = node.predicate.end_char
2431+
begin_end =
2432+
if node.statements.empty?
2433+
node.statements.end_char
2434+
else
2435+
node.statements.body.first.start_char
2436+
end
2437+
2438+
begin_token =
2439+
if buffer.source[begin_start...begin_end].include?("then")
2440+
srange_find(begin_start, begin_end, "then")
2441+
elsif buffer.source[begin_start...begin_end].include?(";")
2442+
srange_find(begin_start, begin_end, ";")
2443+
end
2444+
24422445
smap_condition(
24432446
srange_length(node.start_char, 6),
2444-
srange_search_between(node.predicate, node.statements, "then"),
2447+
begin_token,
24452448
nil,
24462449
srange_length(node.end_char, -3),
24472450
srange_node(node)

0 commit comments

Comments
 (0)