@@ -1555,21 +1555,6 @@ def visit_massign(node)
1555
1555
# Visit a MethodAddBlock node.
1556
1556
def visit_method_add_block ( node )
1557
1557
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
- )
1573
1558
when ARef , Super , ZSuper
1574
1559
type , arguments = block_children ( node . block )
1575
1560
@@ -1578,7 +1563,10 @@ def visit_method_add_block(node)
1578
1563
[ visit ( node . call ) , arguments , visit ( node . block . bodystmt ) ] ,
1579
1564
smap_collection (
1580
1565
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
+ ) ,
1582
1570
srange_node ( node )
1583
1571
)
1584
1572
)
@@ -2439,9 +2427,24 @@ def visit_unless(node)
2439
2427
srange_node ( node )
2440
2428
)
2441
2429
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
+
2442
2445
smap_condition (
2443
2446
srange_length ( node . start_char , 6 ) ,
2444
- srange_search_between ( node . predicate , node . statements , "then" ) ,
2447
+ begin_token ,
2445
2448
nil ,
2446
2449
srange_length ( node . end_char , -3 ) ,
2447
2450
srange_node ( node )
0 commit comments