File tree 2 files changed +12
-2
lines changed
2 files changed +12
-2
lines changed Original file line number Diff line number Diff line change 716
716
}
717
717
| tSTAR arg opt_nl
718
718
{
719
- result = s (:splat, val[1 ])
719
+ result = s (:array, s (: splat, val[1 ]) )
720
720
result.paren = true
721
721
}
722
722
Original file line number Diff line number Diff line change @@ -647,6 +647,10 @@ def new_super args
647
647
s ( :super , args )
648
648
else
649
649
args ||= s ( :arglist )
650
+ if args [ 0 ] == :arglist && args . splat then
651
+ args [ 0 ] = :array
652
+ args = s ( :dummy , args )
653
+ end
650
654
s ( :super , *args [ 1 ..-1 ] )
651
655
end
652
656
end
@@ -696,11 +700,16 @@ def new_xstring str
696
700
end
697
701
698
702
def new_yield args = nil
703
+ # TODO: raise args.inspect unless [:arglist].include? args.first # HACK
699
704
raise SyntaxError , "Block argument should not be given." if
700
705
args && args . node_type == :block_pass
701
706
702
707
args ||= s ( :arglist )
703
- args = s ( :arglist , args ) unless [ :arglist , :array ] . include? args . first
708
+
709
+ # TODO: I can prolly clean this up
710
+ args [ 0 ] = :arglist if args . first == :array
711
+ args [ 0 ] = :array if args [ 0 ] == :arglist && args . splat
712
+ args = s ( :arglist , args ) unless args . first == :arglist
704
713
705
714
return s ( :yield , *args [ 1 ..-1 ] )
706
715
end
@@ -773,6 +782,7 @@ def ret_args node
773
782
# HACK matz wraps ONE of the FOUR splats in a newline to
774
783
# distinguish. I use paren for now. ugh
775
784
node = s ( :svalue , node ) if node [ 0 ] == :splat and not node . paren
785
+ node [ 0 ] = :svalue if node [ 0 ] == :arglist && node [ 1 ] [ 0 ] == :splat
776
786
end
777
787
778
788
node
You can’t perform that action at this time.
0 commit comments