Author: bernhard
Date: Fri Nov 28 01:36:53 2008
New Revision: 33302

Modified:
   trunk/languages/pipp/src/pct/actions.pm
   trunk/languages/pipp/src/pmc/phpnull.pmc
   trunk/languages/pipp/t/pmc/null.t

Log:
[Pipp] Override the get_string() vtable function for PhpNull.
viviself undefined variable to PhpNull.
Add tests.


Modified: trunk/languages/pipp/src/pct/actions.pm
==============================================================================
--- trunk/languages/pipp/src/pct/actions.pm     (original)
+++ trunk/languages/pipp/src/pct/actions.pm     Fri Nov 28 01:36:53 2008
@@ -265,7 +265,7 @@
              $past_var_name,
              $( $<expression> ),
              :scope('keyed'),
-             :viviself('Undef'),
+             :viviself('PhpNull'),
              :lvalue(1)
          );
 }
@@ -276,10 +276,11 @@
 
 method VAR_NAME($/) {
     our $?PIPP_CURRENT_SCOPE;
+
     make PAST::Var.new(
              :scope( $?PIPP_CURRENT_SCOPE ?? $?PIPP_CURRENT_SCOPE !! 'package' 
),
              :name(~$/),
-             :viviself('Undef'),
+             :viviself('PhpNull'),
              :lvalue(1),
          );
 }

Modified: trunk/languages/pipp/src/pmc/phpnull.pmc
==============================================================================
--- trunk/languages/pipp/src/pmc/phpnull.pmc    (original)
+++ trunk/languages/pipp/src/pmc/phpnull.pmc    Fri Nov 28 01:36:53 2008
@@ -42,6 +42,22 @@
 
 /*
 
+=item C<STRING *get_string()>
+
+Returns the string 'NULL'.
+
+=cut
+
+*/
+
+    VTABLE STRING *get_string() {
+        return const_string(INTERP, "NULL");
+    }
+
+
+
+/*
+
 =back
 
 =head2 non-Vtable Methods

Modified: trunk/languages/pipp/t/pmc/null.t
==============================================================================
--- trunk/languages/pipp/t/pmc/null.t   (original)
+++ trunk/languages/pipp/t/pmc/null.t   Fri Nov 28 01:36:53 2008
@@ -21,9 +21,10 @@
 
 .sub 'main' :main
     .include "include/test_more.pir"
-    plan(1)
+    plan(2)
 
     truth_tests()
+    stringification_tests()
 .end
 
 .sub truth_tests
@@ -34,6 +35,17 @@
     nok(null_value,"PhpNull isn't")
 .end
 
+.sub stringification_tests
+    .local pmc null_value
+    .local string s
+    .local int is_ok
+
+    null_value = new 'PhpNull'
+    s = null_value
+    is_ok = s == 'NULL'
+    ok( is_ok, 'stringification' )
+.end
+
 # Local Variables:
 #   mode: pir
 #   cperl-indent-level: 4

Reply via email to