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