Author: pmichaud Date: Tue Dec 30 14:25:53 2008 New Revision: 34678 Modified: branches/rvar/languages/perl6/src/parser/actions.pm Log: [rakudo]: Restore @_ and %_ slurpy params. Modified: branches/rvar/languages/perl6/src/parser/actions.pm ============================================================================== --- branches/rvar/languages/perl6/src/parser/actions.pm (original) +++ branches/rvar/languages/perl6/src/parser/actions.pm Tue Dec 30 14:25:53 2008 @@ -1838,6 +1838,17 @@ my $varname := $sigil ~ $name; $past := PAST::Var.new( :name($varname), :node($/) ); + if $varname eq '@_' || $varname eq '%_' { + unless $?BLOCK.symbol($varname) { + $?BLOCK.symbol( $varname, :scope('lexical') ); + my $param := PAST::Var.new( :name($varname), + :scope('parameter'), + :slurpy(1) ); + if $sigil eq '%' { $param.named(1); } + $?BLOCK[0].unshift($param); + } + } + if $sigil eq '&' { $varname := $name; $past.name($varname); @@ -1854,15 +1865,15 @@ unless $?BLOCK.symbol($varname) { $?BLOCK.symbol( $varname, :scope('lexical') ); $?BLOCK.arity( +$?BLOCK.arity() + 1 ); - my $var := PAST::Var.new(:name($varname), :scope('parameter')); - if $twigil eq ':' { $var.named( $name ); } + my $param := PAST::Var.new(:name($varname), :scope('parameter')); + if $twigil eq ':' { $param.named( $name ); } my $block := $?BLOCK[0]; my $i := +@($block); while $i > 0 && $block[$i-1]<name> gt $varname { $block[$i] := $block[$i-1]; $i--; } - $block[$i] := $var; + $block[$i] := $param; } }