@@ -534,13 +534,24 @@ def on_block(node)
534
534
call . children [ 0 ] . children [ 0 ] , node . children [ 2 ] )
535
535
536
536
elsif
537
- [ :each , :each_value ] . include? method and
538
- node . children [ 1 ] . children . length == 1
537
+ [ :each , :each_value ] . include? method
539
538
then
540
539
if es2015
541
- process node . updated ( :for_of ,
542
- [ s ( :lvasgn , node . children [ 1 ] . children [ 0 ] . children [ 0 ] ) ,
543
- node . children [ 0 ] . children [ 0 ] , node . children [ 2 ] ] )
540
+ if node . children [ 1 ] . children . length > 1
541
+ process node . updated ( :for_of ,
542
+ [ s ( :mlhs , *node . children [ 1 ] . children . map { |child |
543
+ s ( :lvasgn , child . children [ 0 ] ) } ) ,
544
+ node . children [ 0 ] . children [ 0 ] , node . children [ 2 ] ] )
545
+ elsif node . children [ 1 ] . children [ 0 ] . type == :mlhs
546
+ process node . updated ( :for_of ,
547
+ [ s ( :mlhs , *node . children [ 1 ] . children [ 0 ] . children . map { |child |
548
+ s ( :lvasgn , child . children [ 0 ] ) } ) ,
549
+ node . children [ 0 ] . children [ 0 ] , node . children [ 2 ] ] )
550
+ else
551
+ process node . updated ( :for_of ,
552
+ [ s ( :lvasgn , node . children [ 1 ] . children [ 0 ] . children [ 0 ] ) ,
553
+ node . children [ 0 ] . children [ 0 ] , node . children [ 2 ] ] )
554
+ end
544
555
elsif method == :each
545
556
process node . updated ( nil , [ s ( :send , call . children [ 0 ] ,
546
557
:forEach ) , *node . children [ 1 ..2 ] ] )
@@ -572,8 +583,8 @@ def on_block(node)
572
583
if es2017
573
584
# Object.entries(a).forEach(([key, value]) => {})
574
585
process node . updated ( nil , [ s ( :send , s ( :send ,
575
- s ( :const , nil , :Object ) , :entries , call . children [ 0 ] ) , :forEach ) ,
576
- s ( :args , s ( :mlhs , * node . children [ 1 ] . children ) ) , node . children [ 2 ] ] )
586
+ s ( :const , nil , :Object ) , :entries , call . children [ 0 ] ) , :each ) ,
587
+ node . children [ 1 ] , node . children [ 2 ] ] )
577
588
else
578
589
# Object.keys(a).forEach(function(key) {var value = a[key]; ...})
579
590
process node . updated ( nil , [ s ( :send , s ( :send ,
0 commit comments