Author: pmichaud
Date: Sun Dec 28 18:46:53 2008
New Revision: 34537
Modified:
branches/rvar/languages/perl6/src/parser/actions.pm
branches/rvar/languages/perl6/t/00-parrot/05-var.t
branches/rvar/languages/perl6/t/00-parrot/08-regex.t
Log:
[rakudo]: Complain about declaring a lexical twice in same scope.
* Fix some double-declarations in 00-parrot tests.
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 Sun Dec 28 18:46:53 2008
@@ -1754,12 +1754,17 @@
method variable_declarator($/) {
- my $past := $( $<variable> );
+ our $?BLOCK;
+ my $past := $( $<variable> );
+ my $name := $past.name();
+ my $symbol := $?BLOCK.symbol( $name );
+ if $symbol<scope> eq 'lexical' {
+ $/.panic("Redeclaration of variable " ~ $name);
+ }
+
$past.isdecl(1);
- my $name := $past.name();
my $type := List.new();
my $viviself := container_type($<variable><sigil>);
- our $?BLOCK;
$?BLOCK.symbol($name, :type($type), :viviself($viviself) );
make $past;
}
Modified: branches/rvar/languages/perl6/t/00-parrot/05-var.t
==============================================================================
--- branches/rvar/languages/perl6/t/00-parrot/05-var.t (original)
+++ branches/rvar/languages/perl6/t/00-parrot/05-var.t Sun Dec 28 18:46:53 2008
@@ -34,5 +34,5 @@
## nested 'our' declarations
-our $x = 'not ok 12'; { our $x = 'ok 12'; }; say $x;
+$x = 'not ok 12'; { our $x = 'ok 12'; }; say $x;
Modified: branches/rvar/languages/perl6/t/00-parrot/08-regex.t
==============================================================================
--- branches/rvar/languages/perl6/t/00-parrot/08-regex.t (original)
+++ branches/rvar/languages/perl6/t/00-parrot/08-regex.t Sun Dec 28
18:46:53 2008
@@ -19,7 +19,7 @@
'5' ~~ $r and say 'ok 6';
'25' ~~ $r or say 'ok 7';
-my $r = / 5 /;
+$r = / 5 /;
$l ~~ $r and say 'ok 8';
5 ~~ $r and say 'ok 9';
'5' ~~ $r and say 'ok 10';