Author: fperrad
Date: Mon Apr 24 23:34:53 2006
New Revision: 12416

Modified:
   trunk/languages/lua/Lua/build.pm
   trunk/languages/lua/Lua/lua51.yp
   trunk/languages/lua/Lua/parser.pm
   trunk/languages/lua/t/scope.t

Log:
Lua :
- fix a scoping bug

Modified: trunk/languages/lua/Lua/build.pm
==============================================================================
--- trunk/languages/lua/Lua/build.pm    (original)
+++ trunk/languages/lua/Lua/build.pm    Mon Apr 24 23:34:53 2006
@@ -64,12 +64,16 @@
     $parser->YYData->{symbtab_cst} = new SymbTabConst($parser);

     unshift @{ $parser->YYData->{scopef} }, $parser->YYData->{scope};

     $parser->YYData->{scope} = [];

+    unshift @{ $parser->YYData->{scopef} }, $parser->YYData->{lex_num};

+    $parser->YYData->{lex_num} = 0;

 ##    warn "PushScopeF\n";

 }

 

 sub PopScopeF {

     my ($parser) = @_;

 

+    my $lex_num = shift @{ $parser->YYData->{scopef} };

+    $parser->YYData->{lex_num} = $lex_num;

     my $scope = shift @{ $parser->YYData->{scopef} };

     $parser->YYData->{scope} = $scope;

     my $symbtab = shift @{ $parser->YYData->{scopef} };

@@ -85,6 +89,7 @@
 

     unshift @{ $parser->YYData->{scope} }, $parser->YYData->{symbtab};

     $parser->YYData->{symbtab} = new SymbTabVar($parser);

+    $parser->YYData->{lex_num} ++;

 ##    warn "PushScope\n";

 }

 

@@ -93,6 +98,7 @@
 

     my $symbtab = shift @{ $parser->YYData->{scope} };

     $parser->YYData->{symbtab} = $symbtab;

+    $parser->YYData->{lex_num} ++;

 ##    warn "PopScope\n";

 }

 

@@ -772,7 +778,7 @@
     my $defn    = $parser->YYData->{symbtab}->LookupS($idf);

     unless ( defined $defn ) {

         my $name;

-        $name = 'var_' . scalar( @{ $parser->YYData->{scope} } ) . '_' . $idf;

+        $name = 'var_' . $parser->YYData->{lex_num} . '_' . $idf;

         $defn = new defn( $name, 'local', 'pmc', undef, $idf );

         push @opcodes, new LocalDir( $parser,

             'prolog' => 1,


Modified: trunk/languages/lua/Lua/lua51.yp
==============================================================================
--- trunk/languages/lua/Lua/lua51.yp    (original)
+++ trunk/languages/lua/Lua/lua51.yp    Mon Apr 24 23:34:53 2006
@@ -633,6 +633,7 @@
     $parser->YYData->{srcname_mtime} = $st[9];

     $parser->_InitLexico();

     $parser->YYData->{functs}      = [];

+    $parser->YYData->{lex_num}     = 0;

     $parser->YYData->{scope}       = [];

     $parser->YYData->{scopef}      = [];

     $parser->YYData->{symbtab}     = new SymbTabVar($parser);


Modified: trunk/languages/lua/Lua/parser.pm
==============================================================================
--- trunk/languages/lua/Lua/parser.pm   (original)
+++ trunk/languages/lua/Lua/parser.pm   Mon Apr 24 23:34:53 2006
@@ -3772,6 +3772,7 @@
     $parser->YYData->{srcname_mtime} = $st[9];

     $parser->_InitLexico();

     $parser->YYData->{functs}      = [];

+    $parser->YYData->{lex_num}     = 0;

     $parser->YYData->{scope}       = [];

     $parser->YYData->{scopef}      = [];

     $parser->YYData->{symbtab}     = new SymbTabVar($parser);


Modified: trunk/languages/lua/t/scope.t
==============================================================================
--- trunk/languages/lua/t/scope.t       (original)
+++ trunk/languages/lua/t/scope.t       Mon Apr 24 23:34:53 2006
@@ -45,9 +45,6 @@
 10

 OUT

 

-SKIP: {

-skip( 'while exp', 1 );

-

 language_output_is( 'lua', <<'CODE', <<'OUT', 'scope' );

 x = 10

 local i = 1

@@ -81,7 +78,6 @@
 10

 10

 OUT

-}

 

 language_output_is( 'lua', <<'CODE', <<'OUT', 'scope' );

 local a, b = 1, 10

Reply via email to