Author: allison
Date: Sat Apr  7 17:30:43 2007
New Revision: 18032

Modified:
   trunk/languages/punie/lib/ASTGrammar.tg
   trunk/languages/punie/lib/punie.pg
   trunk/languages/punie/t/io_print.t

Log:
[punie]: Fix lvalue handling to match current partridge so Punie can assign to
variables again.


Modified: trunk/languages/punie/lib/ASTGrammar.tg
==============================================================================
--- trunk/languages/punie/lib/ASTGrammar.tg     (original)
+++ trunk/languages/punie/lib/ASTGrammar.tg     Sat Apr  7 17:30:43 2007
@@ -275,7 +275,9 @@
 transform past (PunieGrammar::variable) :language('PIR') {
     .local pmc result
     result = new 'PAST::Var'
-    result.'init'('node'=>node, 'viviself'=>'.Undef')
+    .local int islvalue
+    islvalue = node['islvalue']
+    result.'init'('node'=>node, 'viviself'=>'.Undef', 'islvalue' => islvalue)
     .local string sigil
     .local string name
     sigil = node['sigil']
@@ -437,6 +439,11 @@
       goto iter_loop
   iter_end:
 
+    unless islvalue goto notlvalue
+    $P4 = result[0]
+    $P4.'islvalue'(islvalue)
+  notlvalue:
+
     .return (result)
 }
 

Modified: trunk/languages/punie/lib/punie.pg
==============================================================================
--- trunk/languages/punie/lib/punie.pg  (original)
+++ trunk/languages/punie/lib/punie.pg  Sat Apr  7 17:30:43 2007
@@ -137,6 +137,7 @@
 
 proto infix:= is looser('infix:||')
     is past('assign')
+    is lvalue(1)
     {...}
 
 proto 'infix:,' is looser('infix:=') is assoc('list')

Modified: trunk/languages/punie/t/io_print.t
==============================================================================
--- trunk/languages/punie/t/io_print.t  (original)
+++ trunk/languages/punie/t/io_print.t  Sat Apr  7 17:30:43 2007
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 use lib qw(t . lib ../lib ../../lib ../../../lib);
-use Parrot::Test tests => 13;
+use Parrot::Test tests => 14;
 use Test::More;
 
 language_output_is( 'punie', <<'EOC', '1', 'printing one' );
@@ -81,6 +81,13 @@
 6
 OUT
 
+language_output_is( 'punie', <<'CODE', <<'OUT', 'printing a variable' );
+$x = 1;
+print $x, "\n";
+CODE
+1
+OUT
+
 TODO: {
     local $TODO = 'unimplemented feature';
 

Reply via email to