perl.cvs.parrot http://www.nntp.perl.org/group/perl.cvs.parrot/ ... Copyright 1998-2008 perl.org Mon, 13 Oct 2008 13:26:48 +0000 ask@perl.org [svn:parrot] r31925 - in trunk/languages/pipp: src/pct t/php by bernhard Author: bernhard<br/>Date: Mon Oct 13 04:47:49 2008<br/>New Revision: 31925<br/><br/>Modified:<br/> trunk/languages/pipp/src/pct/actions.pm<br/> trunk/languages/pipp/src/pct/grammar.pg<br/> trunk/languages/pipp/t/php/oo.t<br/><br/>Log:<br/>[Pipp] Start to put member declaration into the symbol table.<br/><br/><br/>Modified: trunk/languages/pipp/src/pct/actions.pm<br/>==============================================================================<br/>--- trunk/languages/pipp/src/pct/actions.pm (original)<br/>+++ trunk/languages/pipp/src/pct/actions.pm Mon Oct 13 04:47:49 2008<br/>@@ -312,14 +312,6 @@<br/> make $past;<br/> }<br/> <br/>-method member_definition($/) {<br/>- make PAST::Op.new(<br/>- $( $&lt;var&gt; ),<br/>- $( $&lt;literal&gt; ),<br/>- :pasttype(&#39;bind&#39;),<br/>- );<br/>-}<br/>-<br/> method method_definition($/) {<br/> <br/> # note that $&lt;param_list&gt; creates a new PAST::Block.<br/>@@ -372,6 +364,9 @@<br/> := PAST::Block.new(<br/> :blocktype(&#39;immediate&#39;),<br/> );<br/>+ for $&lt;member_definition&gt; {<br/>+ $methods_block.symbol( ~$_&lt;VAR_NAME&gt;&lt;ident&gt;, :scope(&#39;attribute&#39;) );<br/>+ }<br/> for $&lt;method_definition&gt; {<br/> $methods_block.push( $($_) );<br/> }<br/><br/>Modified: trunk/languages/pipp/src/pct/grammar.pg<br/>==============================================================================<br/>--- trunk/languages/pipp/src/pct/grammar.pg (original)<br/>+++ trunk/languages/pipp/src/pct/grammar.pg Mon Oct 13 04:47:49 2008<br/>@@ -117,7 +117,7 @@<br/> rule function_definition { &#39;function&#39; &lt;FUNCTION_NAME&gt; &lt;param_list&gt; &lt;block&gt; {*} }<br/> rule method_definition { &#39;function&#39; &lt;METHOD_NAME&gt; &lt;param_list&gt; &lt;block&gt; {*} }<br/> rule param_list { &#39;(&#39; [ &lt;VAR_NAME&gt; [&#39;,&#39; &lt;VAR_NAME&gt;]* ]? &#39;)&#39; {*} }<br/>-rule member_definition { &#39;public&#39; &lt;var&gt; &#39;=&#39; &lt;literal&gt; &lt;.statement_delimiter&gt; {*} }<br/>+rule member_definition { &#39;public&#39; &lt;VAR_NAME&gt; &#39;=&#39; &lt;literal&gt; &lt;.statement_delimiter&gt; {*} }<br/> rule class_definition { &#39;class&#39; &lt;CLASS_NAME&gt;<br/> &#39;{&#39;<br/> &lt;member_definition&gt;*<br/><br/>Modified: trunk/languages/pipp/t/php/oo.t<br/>==============================================================================<br/>--- trunk/languages/pipp/t/php/oo.t (original)<br/>+++ trunk/languages/pipp/t/php/oo.t Mon Oct 13 04:47:49 2008<br/>@@ -18,7 +18,7 @@<br/> use lib &quot;$FindBin::Bin/../../lib&quot;;<br/> <br/> # core Perl modules<br/>-use Test::More tests =&gt; 3;<br/>+use Test::More tests =&gt; 4;<br/> <br/> # Parrot modules<br/> use Parrot::Test;<br/>@@ -40,7 +40,7 @@<br/> After class definition.<br/> END_EXPECTED<br/> <br/>-language_output_is( &#39;Pipp&#39;, &lt;&lt;&#39;END_CODE&#39;, &lt;&lt;&#39;END_EXPECTED&#39;, &#39;dummy class&#39; );<br/>+language_output_is( &#39;Pipp&#39;, &lt;&lt;&#39;END_CODE&#39;, &lt;&lt;&#39;END_EXPECTED&#39;, &#39;calling a class method&#39; );<br/> &lt;?php<br/> <br/> class Dings {<br/>@@ -58,6 +58,25 @@<br/> The function bums() in class Dings has been called.<br/> END_EXPECTED<br/> <br/>+language_output_is( &#39;Pipp&#39;, &lt;&lt;&#39;END_CODE&#39;, &lt;&lt;&#39;END_EXPECTED&#39;, &#39;class with a public member&#39; );<br/>+&lt;?php<br/>+<br/>+class Dings {<br/>+ public $foo_member = &#39;a member of Foo&#39;;<br/>+ <br/>+ function bums() {<br/>+ echo &quot;The function bums() in class Dings has been called.\n&quot;;<br/>+ }<br/>+}<br/>+ <br/>+$dings = new Dings;<br/>+$dings-&gt;bums();<br/>+ <br/>+?&gt;<br/>+END_CODE<br/>+The function bums() in class Dings has been called.<br/>+END_EXPECTED<br/>+<br/> <br/> language_output_is( &#39;Pipp&#39;, &lt;&lt;&#39;END_CODE&#39;, &lt;&lt;&#39;END_EXPECTED&#39;, &#39;using $this&#39; );<br/> &lt;?php<br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32319.html Mon, 13 Oct 2008 04:47:58 +0000 [svn:parrot] r31924 - trunk/languages/pipp/src/pct by bernhard Author: bernhard<br/>Date: Mon Oct 13 04:14:02 2008<br/>New Revision: 31924<br/><br/>Modified:<br/> trunk/languages/pipp/src/pct/actions.pm<br/> trunk/languages/pipp/src/pct/grammar.pg<br/><br/>Log:<br/>[Pipp] Put class methods into an immediate block, as seen on Rakudo.<br/><br/><br/>Modified: trunk/languages/pipp/src/pct/actions.pm<br/>==============================================================================<br/>--- trunk/languages/pipp/src/pct/actions.pm (original)<br/>+++ trunk/languages/pipp/src/pct/actions.pm Mon Oct 13 04:14:02 2008<br/>@@ -357,10 +357,9 @@<br/> method class_definition($/) {<br/> my $past := PAST::Block.new(<br/> :node($/),<br/>- :blocktype(&#39;declaration&#39;),<br/> :namespace( $&lt;CLASS_NAME&gt;&lt;ident&gt; ),<br/>+ :blocktype(&#39;declaration&#39;),<br/> :pirflags( &#39;:init :load&#39; ),<br/>- :lexical( 0 ),<br/> PAST::Stmts.new(<br/> PAST::Op.new(<br/> :inline( &quot;$P0 = get_hll_global &#39;P6metaclass&#39;\n&quot;<br/>@@ -369,9 +368,14 @@<br/> )<br/> )<br/> );<br/>+ my $methods_block<br/>+ := PAST::Block.new(<br/>+ :blocktype(&#39;immediate&#39;),<br/>+ );<br/> for $&lt;method_definition&gt; {<br/>- $past.push( $($_) );<br/>+ $methods_block.push( $($_) );<br/> }<br/>+ $past.push( $methods_block );<br/> <br/> make $past;<br/> }<br/><br/>Modified: trunk/languages/pipp/src/pct/grammar.pg<br/>==============================================================================<br/>--- trunk/languages/pipp/src/pct/grammar.pg (original)<br/>+++ trunk/languages/pipp/src/pct/grammar.pg Mon Oct 13 04:14:02 2008<br/>@@ -74,7 +74,7 @@<br/> token METHOD_NAME { &lt;ident&gt; }<br/> token CONSTANT_NAME { &lt;ident&gt; }<br/> token CLASS_NAME { &lt;ident&gt; }<br/>-token VAR_NAME { &#39;$&#39; &lt;ident&gt; {*} }<br/>+token VAR_NAME { &#39;$&#39; &lt;ident&gt; {*} }<br/> <br/> # terms<br/> rule method_call { &lt;var&gt; &#39;-&gt;&#39; &lt;METHOD_NAME&gt; &#39;(&#39; &lt;arguments&gt; &#39;)&#39; {*} }<br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32318.html Mon, 13 Oct 2008 04:14:13 +0000 [svn:parrot] r31923 - trunk/languages/pipp/src/pct by bernhard Author: bernhard<br/>Date: Mon Oct 13 03:45:09 2008<br/>New Revision: 31923<br/><br/>Modified:<br/> trunk/languages/pipp/src/pct/grammar.pg<br/><br/>Log:<br/>[Pipp] Paamayim Nekudotayim is not allowed in class names.<br/><br/><br/>Modified: trunk/languages/pipp/src/pct/grammar.pg<br/>==============================================================================<br/>--- trunk/languages/pipp/src/pct/grammar.pg (original)<br/>+++ trunk/languages/pipp/src/pct/grammar.pg Mon Oct 13 03:45:09 2008<br/>@@ -73,7 +73,7 @@<br/> token FUNCTION_NAME { &lt;ident&gt; }<br/> token METHOD_NAME { &lt;ident&gt; }<br/> token CONSTANT_NAME { &lt;ident&gt; }<br/>-token CLASS_NAME { &lt;ident&gt; [ &#39;::&#39; &lt;ident&gt; ]* }<br/>+token CLASS_NAME { &lt;ident&gt; }<br/> token VAR_NAME { &#39;$&#39; &lt;ident&gt; {*} }<br/> <br/> # terms<br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32317.html Mon, 13 Oct 2008 03:45:21 +0000 [svn:parrot] r31922 - trunk/languages/pipp/t/php by bernhard Author: bernhard<br/>Date: Mon Oct 13 03:40:17 2008<br/>New Revision: 31922<br/><br/>Modified:<br/> trunk/languages/pipp/t/php/oo.t<br/><br/>Log:<br/>[Pipp] use correct class name in test case.<br/><br/><br/>Modified: trunk/languages/pipp/t/php/oo.t<br/>==============================================================================<br/>--- trunk/languages/pipp/t/php/oo.t (original)<br/>+++ trunk/languages/pipp/t/php/oo.t Mon Oct 13 03:40:17 2008<br/>@@ -29,7 +29,7 @@<br/> class Dings {<br/> <br/> function bums() {<br/>- echo &quot;The function bums() in class dings has been called.\n&quot;;<br/>+ echo &quot;The function bums() in class Dings has been called.\n&quot;;<br/> }<br/> }<br/> <br/>@@ -46,7 +46,7 @@<br/> class Dings {<br/> <br/> function bums() {<br/>- echo &quot;The function bums() in class dings has been called.\n&quot;;<br/>+ echo &quot;The function bums() in class Dings has been called.\n&quot;;<br/> }<br/> }<br/> <br/>@@ -55,7 +55,7 @@<br/> <br/> ?&gt;<br/> END_CODE<br/>-The function bums() in class dings has been called.<br/>+The function bums() in class Dings has been called.<br/> END_EXPECTED<br/> <br/> <br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32316.html Mon, 13 Oct 2008 03:40:28 +0000 [svn:parrot] r31921 - trunk/languages/pipp/src/pct by bernhard Author: bernhard<br/>Date: Mon Oct 13 03:32:03 2008<br/>New Revision: 31921<br/><br/>Modified:<br/> trunk/languages/pipp/src/pct/actions.pm<br/><br/>Log:<br/>[Pipp] Class names don&#39;t need to be split on &#39;::&#39;.<br/><br/><br/>Modified: trunk/languages/pipp/src/pct/actions.pm<br/>==============================================================================<br/>--- trunk/languages/pipp/src/pct/actions.pm (original)<br/>+++ trunk/languages/pipp/src/pct/actions.pm Mon Oct 13 03:32:03 2008<br/>@@ -363,9 +363,8 @@<br/> :lexical( 0 ),<br/> PAST::Stmts.new(<br/> PAST::Op.new(<br/>- :inline( &quot;$P0 = get_hll_global &#39;P6metaclass&#39;\n $P1 = split &#39;::&#39;, &#39;&quot;<br/>- ~ $&lt;CLASS_NAME&gt;<br/>- ~ &quot;&#39;\n push_eh subclass_done\n $P2 = $P0.&#39;new_class&#39;($P1)\n pop_eh\n subclass_done:\n&quot; ),<br/>+ :inline( &quot;$P0 = get_hll_global &#39;P6metaclass&#39;\n&quot;<br/>+ ~ &quot;$P2 = $P0.&#39;new_class&#39;(&#39;&quot; ~ $&lt;CLASS_NAME&gt; ~ &quot;&#39;)\n&quot; ),<br/> :pasttype( &#39;inline&#39; )<br/> )<br/> )<br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32315.html Mon, 13 Oct 2008 03:32:19 +0000 [svn:parrot] r31920 - trunk/languages/pipp/src/pct by bernhard Author: bernhard<br/>Date: Mon Oct 13 02:43:11 2008<br/>New Revision: 31920<br/><br/>Modified:<br/> trunk/languages/pipp/src/pct/grammar.pg<br/><br/>Log:<br/>[Pipp] write name of the proto regexes as identifiers, not as a string<br/><br/><br/>Modified: trunk/languages/pipp/src/pct/grammar.pg<br/>==============================================================================<br/>--- trunk/languages/pipp/src/pct/grammar.pg (original)<br/>+++ trunk/languages/pipp/src/pct/grammar.pg Mon Oct 13 02:43:11 2008<br/>@@ -130,32 +130,32 @@<br/> # operator precedence table<br/> rule expression is optable { ... }<br/> <br/>-proto &#39;postfix:++&#39; is precedence(&#39;1&#39;) { ... }<br/>-proto &#39;postfix:--&#39; is equiv(postfix:&lt;++&gt;) { ... }<br/>-proto &#39;prefix:++&#39; is equiv(postfix:&lt;++&gt;) { ... }<br/>-proto &#39;prefix:--&#39; is equiv(postfix:&lt;++&gt;) { ... }<br/>-<br/>-proto &#39;infix:|&#39; is looser(&#39;postfix:++&#39;) { ... }<br/>-proto &#39;infix:&amp;&#39; is equiv(&#39;infix:|&#39;) { ... }<br/>-proto &#39;infix:^&#39; is equiv(&#39;infix:|&#39;) { ... }<br/>-<br/>-proto &#39;infix:&lt;&#39; is tighter(&#39;infix:|&#39;) { ... }<br/>-proto &#39;infix:&lt;=&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>-proto &#39;infix:&gt;&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>-proto &#39;infix:&gt;=&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>-proto &#39;infix:==&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>-proto &#39;infix:!=&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>-<br/>-proto &#39;infix:+&#39; is tighter(&#39;infix:&lt;&#39;) { ... }<br/>-proto &#39;infix:-&#39; is equiv(&#39;infix:+&#39;) { ... }<br/>-proto &#39;infix:.&#39; is equiv(&#39;infix:+&#39;) is pirop(&#39;concat&#39;) { ... }<br/>-<br/>-proto &#39;infix:*&#39; is tighter(&#39;infix:+&#39;) { ... }<br/>-proto &#39;infix:%&#39; is equiv(&#39;infix:*&#39;) { ... }<br/>-proto &#39;infix:/&#39; is equiv(&#39;infix:*&#39;) { ... }<br/>-<br/>-proto &#39;prefix:-&#39; is tighter(&#39;infix:*&#39;) { ... }<br/>-proto &#39;prefix:+&#39; is equiv(&#39;prefix:-&#39;) { ... }<br/>-proto &#39;prefix:!&#39; is equiv(&#39;prefix:-&#39;) { ... }<br/>+proto postfix:&#39;++&#39; is precedence(&#39;1&#39;) { ... }<br/>+proto postfix:&#39;--&#39; is equiv(postfix:&lt;++&gt;) { ... }<br/>+proto prefix:&#39;++&#39; is equiv(postfix:&lt;++&gt;) { ... }<br/>+proto prefix:&#39;--&#39; is equiv(postfix:&lt;++&gt;) { ... }<br/>+<br/>+proto infix:&#39;|&#39; is looser(&#39;postfix:++&#39;) { ... }<br/>+proto infix:&#39;&amp;&#39; is equiv(&#39;infix:|&#39;) { ... }<br/>+proto infix:&#39;^&#39; is equiv(&#39;infix:|&#39;) { ... }<br/>+<br/>+proto infix:&#39;&lt;&#39; is tighter(&#39;infix:|&#39;) { ... }<br/>+proto infix:&#39;&lt;=&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>+proto infix:&#39;&gt;&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>+proto infix:&#39;&gt;=&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>+proto infix:&#39;==&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>+proto infix:&#39;!=&#39; is equiv(&#39;infix:&lt;&#39;) { ... }<br/>+<br/>+proto infix:&#39;+&#39; is tighter(&#39;infix:&lt;&#39;) { ... }<br/>+proto infix:&#39;-&#39; is equiv(&#39;infix:+&#39;) { ... }<br/>+proto infix:&#39;.&#39; is equiv(&#39;infix:+&#39;) is pirop(&#39;concat&#39;) { ... }<br/>+<br/>+proto infix:&#39;*&#39; is tighter(&#39;infix:+&#39;) { ... }<br/>+proto infix:&#39;%&#39; is equiv(&#39;infix:*&#39;) { ... }<br/>+proto infix:&#39;/&#39; is equiv(&#39;infix:*&#39;) { ... }<br/>+<br/>+proto prefix:&#39;-&#39; is tighter(&#39;infix:*&#39;) { ... }<br/>+proto prefix:&#39;+&#39; is equiv(&#39;prefix:-&#39;) { ... }<br/>+proto prefix:&#39;!&#39; is equiv(&#39;prefix:-&#39;) { ... }<br/> <br/>-proto &#39;term:&#39; is tighter(&#39;prefix:-&#39;) is parsed(&amp;term) { ... }<br/>+proto term:&#39;&#39; is tighter(&#39;prefix:-&#39;) is parsed(&amp;term) { ... }<br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32314.html Mon, 13 Oct 2008 02:43:23 +0000 [svn:parrot] r31919 - trunk/languages/lua/t by fperrad Author: fperrad<br/>Date: Mon Oct 13 00:03:52 2008<br/>New Revision: 31919<br/><br/>Modified:<br/> trunk/languages/lua/t/test_lex.t<br/><br/>Log:<br/>[Lua]<br/>- add conditional skip<br/><br/>Modified: trunk/languages/lua/t/test_lex.t<br/>==============================================================================<br/>--- trunk/languages/lua/t/test_lex.t (original)<br/>+++ trunk/languages/lua/t/test_lex.t Mon Oct 13 00:03:52 2008<br/>@@ -25,8 +25,17 @@<br/> use FindBin;<br/> use lib &quot;$FindBin::Bin&quot;;<br/> <br/>-use Parrot::Test tests =&gt; 23;<br/>+use Parrot::Test;<br/> use Test::More;<br/>+use Parrot::Test::Lua;<br/>+<br/>+my $test_prog = Parrot::Test::Lua::get_test_prog();<br/>+if ( $test_prog eq &#39;lua&#39; || $test_prog eq &#39;luac.pl&#39; ) {<br/>+ plan skip_all =&gt; &quot;parrot only&quot;;<br/>+}<br/>+else {<br/>+ plan tests =&gt; 23;<br/>+}<br/> <br/> language_output_is( &#39;Lua_lex&#39;, &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;hello&#39; );<br/> print(&quot;hello&quot;)<br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32313.html Mon, 13 Oct 2008 00:04:05 +0000 [svn:parrot] r31918 - in trunk/t: compilers/imcc/syn pmc src by chromatic Author: chromatic<br/>Date: Sun Oct 12 18:46:25 2008<br/>New Revision: 31918<br/><br/>Modified:<br/> trunk/t/compilers/imcc/syn/file.t<br/> trunk/t/pmc/eval.t<br/> trunk/t/pmc/multidispatch.t<br/> trunk/t/pmc/sub.t<br/> trunk/t/pmc/sys.t<br/> trunk/t/src/extend.t<br/><br/>Log:<br/>[t] Revised several tests to use unique temporary PIR, PASM, and PBC files.<br/>This avoids spurious and accidental race conditions which cause weird failures<br/>during parallel testing.<br/><br/>Modified: trunk/t/compilers/imcc/syn/file.t<br/>==============================================================================<br/>--- trunk/t/compilers/imcc/syn/file.t (original)<br/>+++ trunk/t/compilers/imcc/syn/file.t Sun Oct 12 18:46:25 2008<br/>@@ -1,13 +1,18 @@<br/> #!perl<br/>-# Copyright (C) 2001-2005, The Perl Foundation.<br/>+# Copyright (C) 2001-2008, The Perl Foundation.<br/> # $Id$<br/> <br/> use strict;<br/> use warnings;<br/> use lib qw( . lib ../lib ../../lib );<br/>+<br/>+use Cwd &#39;cwd&#39;;<br/>+<br/> use File::Spec;<br/> use Test::More;<br/>-use Cwd qw(cwd);<br/>+<br/>+use File::Temp &#39;tempfile&#39;;<br/>+<br/> use Parrot::Config;<br/> use Parrot::Test tests =&gt; 14;<br/> <br/>@@ -29,20 +34,19 @@<br/> <br/> my $ended_ok = 0;<br/> <br/>-delete_temp_files();<br/>-##############################<br/>-open my $FOO, &#39;&gt;&#39;, &quot;temp.pasm&quot; or die &quot;Can&#39;t write temp.pasm\n&quot;;<br/>+my ($FOO, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39;, DIR =&gt; cwd() );<br/>+<br/> print $FOO &lt;&lt;&#39;ENDF&#39;;<br/> .macro_const BAR 42<br/> ENDF<br/> close $FOO;<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;include pasm&#39; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUT&#39;, &#39;include pasm&#39; );<br/> .sub test :main<br/>- print &quot;before\n&quot;<br/>- .include &quot;temp.pasm&quot;<br/>+ say &quot;before&quot;<br/>+ .include &quot;$temp_pasm&quot;<br/> print .BAR<br/>- print &quot;\nafter\n&quot;<br/>+ say &quot;\\nafter&quot;<br/> end<br/> .end<br/> CODE<br/>@@ -50,20 +54,18 @@<br/> 42<br/> after<br/> OUT<br/>-unlink &#39;temp.pasm&#39;;<br/> <br/>-##############################<br/>-open $FOO, &#39;&gt;&#39;, &quot;temp.pasm&quot; or die &quot;Can&#39;t write temp.pasm\n&quot;;<br/>+($FOO, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/> print $FOO &lt;&lt;&#39;ENDF&#39;;<br/> .macro_const BAR 42<br/> ENDF<br/> close $FOO;<br/>-my $temp_abs_path = cwd().&quot;/temp.pasm&quot;;<br/> <br/> pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUT&#39;, &#39;include pasm (absolute path)&#39; );<br/> .sub test :main<br/> say &quot;before&quot;<br/>- .include &#39;$temp_abs_path&#39;<br/>+ .include &#39;$temp_pasm&#39;<br/> say .BAR<br/> say &quot;after&quot;<br/> end<br/>@@ -73,21 +75,20 @@<br/> 42<br/> after<br/> OUT<br/>-unlink &#39;temp.pasm&#39;;<br/> <br/>-##############################<br/>-open $FOO, &#39;&gt;&#39;, &#39;temp.pir&#39; or die &quot;Can&#39;t write temp.pir: $!\n&quot;;<br/>+($FOO, my $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+<br/> print $FOO &lt;&lt;&#39;ENDF&#39;;<br/> .const int BAR = 42<br/> ENDF<br/> close $FOO;<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;include pir&#39; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUT&#39;, &#39;include pir&#39; );<br/> .sub test :main<br/>- print &quot;before\n&quot;<br/>- .include &quot;temp.pir&quot;<br/>+ say &quot;before&quot;<br/>+ .include &quot;$temp_pir&quot;<br/> print BAR<br/>- print &quot;\nafter\n&quot;<br/>+ say &quot;\\nafter&quot;<br/> end<br/> .end<br/> CODE<br/>@@ -95,21 +96,20 @@<br/> 42<br/> after<br/> OUT<br/>-unlink &quot;temp.pir&quot;;<br/> <br/>-##############################<br/>-open $FOO, &#39;&gt;&#39;, &#39;temp.inc&#39; or die &quot;Can&#39;t write temp.inc: $!\n&quot;;<br/>+($FOO, my $temp_inc) = tempfile( SUFFIX =&gt; &#39;.inc&#39; );<br/>+<br/> print $FOO &lt;&lt;&#39;ENDF&#39;;<br/> .const int BAR = 42<br/> ENDF<br/> close $FOO;<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;include temp.inc&#39; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUT&#39;, &#39;include temp.inc&#39; );<br/> .sub test :main<br/>- print &quot;before\n&quot;<br/>- .include &quot;temp.inc&quot;<br/>+ say &quot;before&quot;<br/>+ .include &quot;$temp_inc&quot;<br/> print BAR<br/>- print &quot;\nafter\n&quot;<br/>+ say &quot;\\nafter&quot;<br/> end<br/> .end<br/> CODE<br/>@@ -117,12 +117,10 @@<br/> 42<br/> after<br/> OUT<br/>-unlink &quot;temp.inc&quot;;<br/> <br/>-##############################<br/>-my $file = &#39;_test.inc&#39;;<br/>-open my $F, &#39;&gt;&#39;, $file or die &quot;Can&#39;t create $file: $!\n&quot;;<br/>-print $F &lt;&lt;&#39;EOF&#39;;<br/>+($FOO, $temp_inc) = tempfile( SUFFIX =&gt; &#39;.inc&#39; );<br/>+<br/>+print $FOO &lt;&lt;&#39;EOF&#39;;<br/> .sub _foo # sub foo(int a, int b)<br/> .param int a<br/> .param int b<br/>@@ -139,9 +137,9 @@<br/> .return (pl, mi)<br/> .end<br/> EOF<br/>-close $F;<br/>+close $FOO;<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;subroutine in external file&#39; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUT&#39;, &#39;subroutine in external file&#39; );<br/> .sub test :main<br/> .local int x<br/> x = 10<br/>@@ -152,14 +150,12 @@<br/> (r, s) = _foo(x,y)<br/> <br/> print &quot;r = &quot;<br/>- print r<br/>- print &quot;\n&quot;<br/>+ say r<br/> print &quot;s = &quot;<br/>- print s<br/>- print &quot;\n&quot;<br/>+ say s<br/> end<br/> .end<br/>-.include &quot;_test.inc&quot;<br/>+.include &quot;$temp_inc&quot;<br/> CODE<br/> a = 10<br/> b = 20<br/>@@ -170,27 +166,28 @@<br/> # test load_bytecode branches and subs<br/> <br/> # write sub2<br/>-open $FOO, &#39;&gt;&#39;, &#39;temp.pir&#39; or die &quot;Can&#39;t write temp.pir: $!\n&quot;;<br/>+($FOO, $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+<br/> print $FOO &lt;&lt;&#39;ENDF&#39;;<br/> .sub _sub2<br/>- print &quot;sub2\n&quot;<br/>+ say &quot;sub2&quot;<br/> end<br/> .end<br/> ENDF<br/> close $FOO;<br/> <br/> # compile it<br/>+(undef, my $temp_pbc) = tempfile( SUFFIX =&gt; &#39;.pbc&#39; );<br/>+system_or_die( $PARROT, &#39;-o&#39;, $temp_pbc, $temp_pir );<br/> <br/>-system_or_die( $PARROT, qw( -o temp.pbc temp.pir ) );<br/>-<br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;call sub in external pbc&#39; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUT&#39;, &#39;call sub in external pbc&#39; );<br/> .sub _sub1<br/>- print &quot;sub1\n&quot;<br/>- load_bytecode &quot;temp.pbc&quot;<br/>- print &quot;loaded\n&quot;<br/>- $P0 = global &quot;_sub2&quot;<br/>+ say &quot;sub1&quot;<br/>+ load_bytecode &quot;$temp_pbc&quot;<br/>+ say &quot;loaded&quot;<br/>+ \$P0 = global &quot;_sub2&quot;<br/> .begin_call<br/>- .call $P0<br/>+ .call \$P0<br/> ret:<br/> .end_call<br/> end<br/>@@ -202,7 +199,9 @@<br/> OUT<br/> <br/> # write sub2<br/>-open $FOO, &#39;&gt;&#39;, &#39;temp.pir&#39; or die &quot;Can&#39;t write temp.pir: $!\n&quot;;<br/>+($FOO, $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+(undef, $temp_pbc) = tempfile( SUFFIX =&gt; &#39;.pbc&#39; );<br/>+<br/> print $FOO &lt;&lt;&#39;ENDF&#39;;<br/> .sub _sub2<br/> print &quot;sub2\n&quot;<br/>@@ -215,20 +214,19 @@<br/> <br/> # compile it<br/> <br/>-unlink &#39;temp.pbc&#39;;<br/>-system_or_die( $PARROT, qw( -o temp.pbc temp.pir ) );<br/>+system_or_die( $PARROT, &#39;-o&#39;, $temp_pbc, $temp_pir );<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;call sub in external pbc, return&#39; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUT&#39;, &#39;call sub in external pbc, return&#39; );<br/> .sub _sub1<br/>- print &quot;sub1\n&quot;<br/>- load_bytecode &quot;temp.pbc&quot;<br/>- print &quot;loaded\n&quot;<br/>- $P0 = global &quot;_sub2&quot;<br/>+ say &quot;sub1&quot;<br/>+ load_bytecode &quot;$temp_pbc&quot;<br/>+ say &quot;loaded&quot;<br/>+ \$P0 = global &quot;_sub2&quot;<br/> .begin_call<br/>- .call $P0<br/>+ .call \$P0<br/> ret:<br/> .end_call<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> .end<br/> CODE<br/>@@ -239,33 +237,33 @@<br/> OUT<br/> <br/> # write sub2<br/>-open $FOO, &#39;&gt;&#39;, &#39;temp.pir&#39; or die &quot;Can&#39;t write temp.pir: $!\n&quot;;<br/>+($FOO, $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+(undef, $temp_pbc) = tempfile( SUFFIX =&gt; &#39;.pbc&#39; );<br/>+<br/> print $FOO &lt;&lt;&#39;ENDF&#39;;<br/> .sub _not_sub2<br/>- print &quot;not sub2\n&quot;<br/>+ say &quot;not sub2&quot;<br/> end<br/> .end<br/> <br/> .sub _sub2<br/>- print &quot;sub2\n&quot;<br/>+ say &quot;sub2&quot;<br/> end<br/> .end<br/> ENDF<br/> close $FOO;<br/> <br/> # compile it<br/>+system($PARROT, &#39;-o&#39;, $temp_pbc, $temp_pir);<br/> <br/>-unlink &#39;temp.pbc&#39;;<br/>-system(&quot;$PARROT -o temp.pbc temp.pir&quot;);<br/>-<br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;call sub in external pbc with 2 subs&#39; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUT&#39;, &#39;call sub in external pbc with 2 subs&#39; );<br/> .sub _sub1<br/>- print &quot;sub1\n&quot;<br/>- load_bytecode &quot;temp.pbc&quot;<br/>- print &quot;loaded\n&quot;<br/>- $P0 = global &quot;_sub2&quot;<br/>+ say &quot;sub1&quot;<br/>+ load_bytecode &quot;$temp_pbc&quot;<br/>+ say &quot;loaded&quot;<br/>+ \$P0 = global &quot;_sub2&quot;<br/> .begin_call<br/>- .call $P0<br/>+ .call \$P0<br/> ret:<br/> .end_call<br/> end<br/>@@ -277,7 +275,7 @@<br/> OUT<br/> <br/> # write sub2<br/>-open $FOO, &#39;&gt;&#39;, &quot;temp.pir&quot; or die &quot;Can&#39;t write temp.pir: $!\n&quot;;<br/>+open $FOO, &#39;&gt;&#39;, &quot;$temp_pir&quot; or die &quot;Can&#39;t write $temp_pir: $!\n&quot;;<br/> print $FOO &lt;&lt;&#39;ENDF&#39;;<br/> .sub _sub2<br/> print &quot;sub2\n&quot;<br/>@@ -290,17 +288,17 @@<br/> <br/> # compile it<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;call sub in external pir, return&#39; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUT&#39;, &#39;call sub in external pir, return&#39; );<br/> .sub _sub1<br/>- print &quot;sub1\n&quot;<br/>- load_bytecode &quot;temp.pir&quot;<br/>- print &quot;loaded\n&quot;<br/>- $P0 = global &quot;_sub2&quot;<br/>+ say &quot;sub1&quot;<br/>+ load_bytecode &quot;$temp_pir&quot;<br/>+ say &quot;loaded&quot;<br/>+ \$P0 = global &quot;_sub2&quot;<br/> .begin_call<br/>- .call $P0<br/>+ .call \$P0<br/> ret:<br/> .end_call<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> .end<br/> CODE<br/>@@ -335,35 +333,36 @@<br/> OUT<br/> <br/> # write subs<br/>-open $FOO, &#39;&gt;&#39;, &#39;temp.pir&#39; or die &quot;Can&#39;t write temp.pir: $!\n&quot;;<br/>+($FOO, $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+<br/> print $FOO &lt;&lt;&#39;ENDF&#39;;<br/> .sub _sub1<br/>- print &quot;sub1\n&quot;<br/>+ say &quot;sub1&quot;<br/> $P0 = global &quot;_sub2&quot;<br/> .begin_call<br/> .call $P0<br/> ret:<br/> .end_call<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> .end<br/> <br/> .sub _sub2<br/>- print &quot;sub2\n&quot;<br/>+ say &quot;sub2&quot;<br/> .begin_return<br/> .end_return<br/> end<br/> .end<br/> ENDF<br/>+<br/> close $FOO;<br/> <br/> # compile it<br/> <br/>-unlink &#39;temp.pbc&#39;;<br/>-system_or_die( $PARROT, qw( -o temp.pbc temp.pir ) );<br/>+system_or_die( $PARROT, &#39;-o&#39;, $temp_pbc, $temp_pir );<br/> <br/> use Test::More;<br/>-is( `$PARROT temp.pbc`, &lt;&lt;OUT, &#39;call internal sub like external, precompiled&#39; );<br/>+is( `$PARROT $temp_pbc`, &lt;&lt;OUT, &#39;call internal sub like external, precompiled&#39; );<br/> sub1<br/> sub2<br/> back<br/>@@ -374,7 +373,8 @@<br/> # include a non-existent file and catch the error message<br/> my $err_msg;<br/> {<br/>- open $FOO, &#39;&gt;&#39;, &#39;temp.pir&#39; or die &quot;Can&#39;t write temp.pir: $!\n&quot;;<br/>+ ($FOO, $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+<br/> print $FOO &lt;&lt;&#39;END_PIR&#39;;<br/> # Including a non-existent file should produce an error<br/> .include &quot;non_existent.pir&quot;<br/>@@ -385,15 +385,16 @@<br/> .end<br/> END_PIR<br/> close $FOO;<br/>+<br/> my $OLDERR;<br/> open $OLDERR, &#39;&gt;&amp;&#39;, &#39;STDERR&#39; or die &quot;Can&#39;t save STDERR: $!\n&quot;;<br/>- open STDERR, &#39;&gt;&#39;, &#39;temp.out&#39; or die &quot;Can&#39;t write temp.out: $!\n&quot;;<br/>- system( $PARROT, &#39;temp.pir&#39; ); # We expect an error here.<br/>- open $FOO, &#39;&lt;&#39;, &#39;temp.out&#39; or die &quot;Can&#39;t read temp.out: $!\n&quot;;<br/>+ (undef, my $temp_out) = tempfile( SUFFIX =&gt; &#39;.out&#39; );<br/>+ open STDERR, &#39;&gt;&#39;, $temp_out or die &quot;Can&#39;t write $temp_out: $!\n&quot;;<br/>+ system( $PARROT, $temp_pir ); # We expect an error here.<br/>+ open $FOO, &#39;&lt;&#39;, $temp_out or die &quot;Can&#39;t read $temp_out: $!\n&quot;;<br/> { local $/; $err_msg = &lt;$FOO&gt;; }<br/> close $FOO;<br/> open STDERR, &#39;&gt;&amp;&#39;, $OLDERR or die &quot;Can&#39;t restore STDERR: $!\n&quot;;<br/>- unlink &#39;temp.out&#39;;<br/> }<br/> <br/> # read a non-existent file and catch the error message<br/>@@ -401,7 +402,8 @@<br/> {<br/> open $FOO, &#39;&lt;&#39;, &#39;non_existent.file&#39;;<br/> my $ENOENT = $! + 0;<br/>- open $FOO, &#39;&gt;&#39;, &#39;temp.pir&#39; or die &quot;Can&#39;t write temp.pir: $!\n&quot;;<br/>+ open $FOO, &#39;&gt;&#39;, $temp_pir or die &quot;Can&#39;t write to &#39;$temp_pir&#39;: $!\n&quot;;<br/>+<br/> print $FOO &lt;&lt;&quot;END_PIR&quot;;<br/> .sub test \:main<br/> # run a OS command, and get the errmessge for the exit code<br/>@@ -412,15 +414,14 @@<br/> .end<br/> END_PIR<br/> close $FOO;<br/>- $enoent_err_msg = qx{$PARROT temp.pir}<br/>+ $enoent_err_msg = qx{$PARROT $temp_pir}<br/> }<br/> <br/> $err_msg =~ s/\r//g if $^O =~ /^(MSWin32|msys)$/i;<br/> is( $err_msg, &lt;&lt; &quot;OUT&quot;, &#39;including a non-existent file&#39; );<br/> error:imcc:$enoent_err_msg<br/>-\tin file &#39;temp.pir&#39; line 2<br/>+\tin file &#39;$temp_pir&#39; line 2<br/> OUT<br/>- unlink &#39;temp.pir&#39;;<br/> }<br/> <br/> SKIP:<br/>@@ -430,7 +431,7 @@<br/> pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUT&#39;, &#39;twice call sub in external pir, return&#39; );<br/> .sub _sub1<br/> print &quot;sub1\n&quot;<br/>- load_bytecode &quot;temp.pir&quot;<br/>+ load_bytecode &quot;$temp_pir&quot;<br/> print &quot;loaded\n&quot;<br/> $P0 = global &quot;_sub2&quot;<br/> .begin_call<br/>@@ -439,7 +440,7 @@<br/> .end_call<br/> print &quot;back\n&quot;<br/> print &quot;sub1 again\n&quot;<br/>- load_bytecode &quot;temp.pir&quot;<br/>+ load_bytecode &quot;$temp_pir&quot;<br/> print &quot;loaded again\n&quot;<br/> $P0 = global &quot;_sub2&quot;<br/> .begin_call<br/>@@ -525,16 +526,6 @@<br/> print &quot;# Return $rc\n&quot;;<br/> }<br/> <br/>-sub delete_temp_files {<br/>- for ( @temp_files, $file, &#39;temp.pir&#39;, &#39;temp.pbc&#39; ) {<br/>- unlink if defined;<br/>- }<br/>-}<br/>-<br/>-END {<br/>- delete_temp_files() if $ended_ok;<br/>-}<br/>-<br/> # Local Variables:<br/> # mode: cperl<br/> # cperl-indent-level: 4<br/><br/>Modified: trunk/t/pmc/eval.t<br/>==============================================================================<br/>--- trunk/t/pmc/eval.t (original)<br/>+++ trunk/t/pmc/eval.t Sun Oct 12 18:46:25 2008<br/>@@ -1,11 +1,14 @@<br/> #! perl<br/>-# Copyright (C) 2001-2007, The Perl Foundation.<br/>+# Copyright (C) 2001-2008, The Perl Foundation.<br/> # $Id$<br/> <br/> use strict;<br/> use warnings;<br/> use lib qw( . lib ../lib ../../lib );<br/>+<br/> use Test::More;<br/>+use File::Temp &#39;tempfile&#39;;<br/>+<br/> use Parrot::Test tests =&gt; 17;<br/> <br/> =head1 NAME<br/>@@ -509,8 +512,8 @@<br/> ok<br/> OUTPUT<br/> <br/>-open my $TEMP, &#39;&gt;&#39;, &quot;temp.pir&quot; or die &quot;can&#39;t open &#39;temp.pir&#39;: $!&quot;;<br/>-END { unlink &quot;temp.pir&quot; }<br/>+my ($TEMP, $filename) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+<br/> print $TEMP &lt;&lt;PIR;<br/> .sub foo<br/> print a typo<br/>@@ -518,10 +521,10 @@<br/> PIR<br/> close $TEMP;<br/> <br/>-pir_error_output_like( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;compile err in load_bytecode&quot; );<br/>+pir_error_output_like( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;compile err in load_bytecode&quot; );<br/> .sub main :main<br/>- load_bytecode &quot;temp.pir&quot;<br/>- print &quot;never\n&quot;<br/>+ load_bytecode &quot;$filename&quot;<br/>+ print &quot;never\\n&quot;<br/> end<br/> .end<br/> CODE<br/>@@ -531,7 +534,7 @@<br/> pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;catch compile err in load_bytecode&quot; );<br/> .sub main :main<br/> push_eh handler<br/>- load_bytecode &quot;temp.pir&quot;<br/>+ load_bytecode &quot;$filename&quot;<br/> print &quot;never\n&quot;<br/> end<br/> handler:<br/><br/>Modified: trunk/t/pmc/multidispatch.t<br/>==============================================================================<br/>--- trunk/t/pmc/multidispatch.t (original)<br/>+++ trunk/t/pmc/multidispatch.t Sun Oct 12 18:46:25 2008<br/>@@ -1,5 +1,5 @@<br/> #! perl<br/>-# Copyright (C) 2001-2007, The Perl Foundation.<br/>+# Copyright (C) 2001-2008, The Perl Foundation.<br/> # $Id$<br/> <br/> use strict;<br/>@@ -7,6 +7,8 @@<br/> use lib qw( . lib ../lib ../../lib );<br/> <br/> use Test::More;<br/>+use File::Temp &#39;tempfile&#39;;<br/>+<br/> use Parrot::Test tests =&gt; 44;<br/> <br/> =head1 NAME<br/>@@ -210,11 +212,9 @@<br/> -42<br/> OUTPUT<br/> <br/>-my $temp = &quot;temp.pir&quot;;<br/>-END { unlink $temp; }<br/>+my ($TEMP, $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/> <br/>-open my $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .sub Integer_divide_Integer<br/> .param pmc left<br/> .param pmc right<br/>@@ -223,26 +223,23 @@<br/> .return(lhs)<br/> .end<br/> EOF<br/>-close $S;<br/>-<br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;PASM MMD divide - loaded sub&quot; );<br/>+close $TEMP;<br/> <br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;PASM MMD divide - loaded sub&quot; );<br/> .sub _main<br/> .local pmc divide<br/>- load_bytecode &quot;temp.pir&quot;<br/>+ load_bytecode &quot;$temp_pir&quot;<br/> divide = global &quot;Integer_divide_Integer&quot;<br/> add_multi &quot;divide&quot;, &quot;Integer,Integer&quot;, divide<br/> <br/>- $P0 = new &#39;Integer&#39;<br/>- $P1 = new &#39;Integer&#39;<br/>- $P2 = new &#39;Integer&#39;<br/>- $P1 = 10<br/>- $P2 = 3<br/>- $P0 = $P1 / $P2<br/>- print $P0<br/>- print &quot;\n&quot;<br/>+ \$P0 = new &#39;Integer&#39;<br/>+ \$P1 = new &#39;Integer&#39;<br/>+ \$P2 = new &#39;Integer&#39;<br/>+ \$P1 = 10<br/>+ \$P2 = 3<br/>+ \$P0 = \$P1 / \$P2<br/>+ say \$P0<br/> .end<br/>-<br/> CODE<br/> 42<br/> OUTPUT<br/>@@ -930,11 +927,9 @@<br/> 2<br/> OUTPUT<br/> <br/>-## my $temp = &quot;temp.pir&quot;;<br/>-## END { unlink $temp; };<br/>+($TEMP, $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/> <br/>-open my $P, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;can&#39;t write $temp&quot;;<br/>-print $P &lt;&lt;&#39;EOF&#39;;<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .namespace [&quot;AInt&quot;]<br/> .sub add :multi(AInt, Integer, PMC)<br/> .param pmc l<br/>@@ -948,20 +943,19 @@<br/> .return(d)<br/> .end<br/> EOF<br/>-close $P;<br/>+close $TEMP;<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;override builtin add&quot; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;override builtin add&quot; );<br/> .sub main<br/>- load_bytecode &quot;temp.pir&quot;<br/>- $P0 = subclass &quot;Integer&quot;, &quot;AInt&quot;<br/>- $P0 = new &quot;AInt&quot;<br/>- $P1 = new &#39;Integer&#39;<br/>- set $P0, 6<br/>- set $P1, 2<br/>+ load_bytecode &quot;$temp_pir&quot;<br/>+ \$P0 = subclass &quot;Integer&quot;, &quot;AInt&quot;<br/>+ \$P0 = new &quot;AInt&quot;<br/>+ \$P1 = new &#39;Integer&#39;<br/>+ set \$P0, 6<br/>+ set \$P1, 2<br/> <br/>- $P2 = add $P0, $P1<br/>- print $P2<br/>- print &quot;\n&quot;<br/>+ \$P2 = add \$P0, \$P1<br/>+ say \$P2<br/> .end<br/> CODE<br/> 62<br/>@@ -1234,7 +1228,7 @@<br/> Called multi for class<br/> OUTPUT<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;unicode sub names and multi (RT#39254)&quot; );<br/>+pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;unicode sub names and multi (RT #39254)&quot; );<br/> .sub unicode:&quot;\u7777&quot; :multi(string)<br/> .param pmc arg<br/> print &#39;String:&#39;<br/><br/>Modified: trunk/t/pmc/sub.t<br/>==============================================================================<br/>--- trunk/t/pmc/sub.t (original)<br/>+++ trunk/t/pmc/sub.t Sun Oct 12 18:46:25 2008<br/>@@ -7,6 +7,8 @@<br/> use lib qw( . lib ../lib ../../lib );<br/> <br/> use Test::More;<br/>+use File::Temp &#39;tempfile&#39;;<br/>+<br/> use Parrot::Test tests =&gt; 65;<br/> use Parrot::Config;<br/> <br/>@@ -25,12 +27,6 @@<br/> <br/> =cut<br/> <br/>-my $temp = &quot;temp.pasm&quot;;<br/>-<br/>-END {<br/>- unlink( $temp, &#39;temp.pbc&#39;, &#39;temp.pasm&#39; );<br/>-}<br/>-<br/> pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;PASM subs - invokecc&quot; );<br/> .const .Sub P0 = &quot;func&quot;<br/> <br/>@@ -124,7 +120,7 @@<br/> ok:<br/> print &quot;ok 1\n&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> .pcc_sub _the_sub:<br/> print &quot;in sub\n&quot;<br/>@@ -143,7 +139,7 @@<br/> ok:<br/> print &quot;ok 1\n&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> <br/> .pcc_sub _the_sub:<br/>@@ -173,7 +169,7 @@<br/> ok:<br/> print &quot;ok 1\n&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> .pcc_sub _the::sub::some::where:<br/> print &quot;in sub\n&quot;<br/>@@ -184,27 +180,27 @@<br/> back<br/> OUTPUT<br/> <br/>-open my $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+my ($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub _sub1:<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> end<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode call sub&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode call sub&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pasm&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub1&quot;<br/> defined I0, P0<br/> if I0, ok1<br/> print &quot;not &quot;<br/> ok1:<br/>- print &quot;found sub\n&quot;<br/>+ say &quot;found sub&quot;<br/> invokecc P0<br/>- print &quot;never\n&quot;<br/>+ say &quot;never&quot;<br/> end<br/> CODE<br/> main<br/>@@ -213,27 +209,28 @@<br/> in sub1<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub _sub1:<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode call sub, ret&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode call sub, ret&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pasm&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub1&quot;<br/> defined I0, P0<br/> if I0, ok1<br/> print &quot;not &quot;<br/> ok1:<br/>- print &quot;found sub\n&quot;<br/>+ say &quot;found sub&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -243,42 +240,43 @@<br/> back<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub _sub1:<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> .pcc_sub _sub2:<br/>- print &quot;in sub2\n&quot;<br/>+ say &quot;in sub2&quot;<br/> returncc<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode call different subs, ret&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode call different subs, ret&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pasm&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub1&quot;<br/> defined I0, P0<br/> if I0, ok1<br/> print &quot;not &quot;<br/> ok1:<br/>- print &quot;found sub1\n&quot;<br/>+ say &quot;found sub1&quot;<br/> set P10, P0<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> get_global P0, &quot;_sub2&quot;<br/> defined I0, P0<br/> if I0, ok2<br/> print &quot;not &quot;<br/> ok2:<br/>- print &quot;found sub2\n&quot;<br/>+ say &quot;found sub2&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> set P0, P10<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -293,15 +291,17 @@<br/> back<br/> OUTPUT<br/> <br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o temp.pbc $temp&quot;);<br/>+my (undef, $temp_pbc) = tempfile( SUFFIX =&gt; &#39;.pbc&#39; );<br/>+<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $temp_pbc, $temp_pasm);<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode Sx&quot; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode Sx&quot; );<br/> .sub main :main<br/>- $S0 = &#39;temp.pasm&#39;<br/>- load_bytecode $S0<br/>+ \$S0 = &#39;$temp_pasm&#39;<br/>+ load_bytecode \$S0<br/> _sub1()<br/>- $S0 = &#39;temp.pbc&#39;<br/>- load_bytecode $S0<br/>+ \$S0 = &#39;$temp_pbc&#39;<br/>+ load_bytecode \$S0<br/> _sub2()<br/> .end<br/> CODE<br/>@@ -309,31 +309,31 @@<br/> in sub2<br/> OUTPUT<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode PBC call different subs, ret&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode PBC call different subs, ret&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pbc&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub1&quot;<br/> defined I0, P0<br/> if I0, ok1<br/> print &quot;not &quot;<br/> ok1:<br/>- print &quot;found sub1\n&quot;<br/>+ say &quot;found sub1&quot;<br/> set P10, P0<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> get_global P0, &quot;_sub2&quot;<br/> defined I0, P0<br/> if I0, ok2<br/> print &quot;not &quot;<br/> ok2:<br/>- print &quot;found sub2\n&quot;<br/>+ say &quot;found sub2&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> set P0, P10<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -412,19 +412,20 @@<br/> ok<br/> OUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub :load _sub1:<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load&#39; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load&#39; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pasm&quot;<br/>- print &quot;back\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -432,21 +433,22 @@<br/> back<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub _error:<br/>- print &quot;error\n&quot;<br/>+ say &quot;error&quot;<br/> .pcc_sub :load _sub1:<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load second sub&#39; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load second sub&#39; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pasm&quot;<br/>- print &quot;back\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -454,13 +456,13 @@<br/> back<br/> OUTPUT<br/> <br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o temp.pbc $temp&quot;);<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $temp_pbc, $temp_pasm );<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load in pbc&#39; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load in pbc&#39; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pbc&quot;<br/>- print &quot;back\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pbc&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -468,25 +470,26 @@<br/> back<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub :load _sub1:<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> .pcc_sub _sub2:<br/> print &quot;in sub2\n&quot;<br/> returncc<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun first&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun first&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pasm&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub2&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -496,16 +499,16 @@<br/> back<br/> OUTPUT<br/> <br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o temp.pbc $temp&quot;);<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $temp_pbc, $temp_pasm );<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun first in pbc&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun first in pbc&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pbc&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pbc&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub2&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -515,25 +518,26 @@<br/> back<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub _sub1:<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> .pcc_sub :load _sub2:<br/> print &quot;in sub2\n&quot;<br/> returncc<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun second&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun second&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pasm&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub1&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -543,16 +547,16 @@<br/> back<br/> OUTPUT<br/> <br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o temp.pbc $temp&quot;);<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $temp_pbc, $temp_pasm );<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun second in pbc&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun second in pbc&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pbc&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pbc&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub1&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -562,25 +566,26 @@<br/> back<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub :load _sub1:<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> .pcc_sub :load _sub2:<br/> print &quot;in sub2\n&quot;<br/> returncc<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun both&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun both&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pasm&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub1&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -591,16 +596,16 @@<br/> back<br/> OUTPUT<br/> <br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o temp.pbc $temp&quot;);<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $temp_pbc, $temp_pasm );<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun both in pbc&quot; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &quot;load_bytecode autorun both in pbc&quot; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pbc&quot;<br/>- print &quot;loaded\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pbc&quot;<br/>+ say &quot;loaded&quot;<br/> get_global P0, &quot;_sub1&quot;<br/> invokecc P0<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -616,7 +621,7 @@<br/> print &quot;first\n&quot;<br/> returncc<br/> .pcc_sub :main _main:<br/>- print &quot;main\n&quot;<br/>+ say &quot;main&quot;<br/> end<br/> CODE<br/> main<br/>@@ -627,7 +632,7 @@<br/> print &quot;first\n&quot;<br/> returncc<br/> .pcc_sub :main _main:<br/>- print &quot;main\n&quot;<br/>+ say &quot;main&quot;<br/> end<br/> .pcc_sub :main _second:<br/> print &quot;second\n&quot;<br/>@@ -644,7 +649,7 @@<br/> print &quot;second\n&quot;<br/> returncc<br/> .pcc_sub :main _main:<br/>- print &quot;main\n&quot;<br/>+ say &quot;main&quot;<br/> get_global P0, &quot;_first&quot;<br/> invokecc P0<br/> get_global P0, &quot;_second&quot;<br/>@@ -674,21 +679,20 @@<br/> /too few arguments passed \(1\) - 2 params expected/<br/> OUTPUT<br/> <br/>-$temp = &quot;temp.pir&quot;;<br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile();<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .sub _sub1 :load<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> .end<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load first sub - pir&#39; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load first sub - pir&#39; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pir&quot;<br/>- print &quot;back\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -696,8 +700,8 @@<br/> back<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile();<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .sub _foo<br/> print &quot;error\n&quot;<br/> .end<br/>@@ -705,17 +709,17 @@<br/> # :load or other pragmas are only evaluated on the first<br/> # instruction of a compilation unit<br/> .sub _sub1 :load<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> .end<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load second sub - pir&#39; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode :load second sub - pir&#39; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pir&quot;<br/>- print &quot;back\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pasm&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -723,23 +727,24 @@<br/> back<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp&quot; or die &quot;Can&#39;t write $temp&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, my $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .sub _foo<br/> print &quot;error\n&quot;<br/> .end<br/> .sub _sub1<br/>- print &quot;in sub1\n&quot;<br/>+ say &quot;in sub1&quot;<br/> returncc<br/> .end<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/>-pasm_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode no :load - pir&#39; );<br/>+pasm_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;load_bytecode no :load - pir&#39; );<br/> .pcc_sub _main:<br/>- print &quot;main\n&quot;<br/>- load_bytecode &quot;temp.pir&quot;<br/>- print &quot;back\n&quot;<br/>+ say &quot;main&quot;<br/>+ load_bytecode &quot;$temp_pir&quot;<br/>+ say &quot;back&quot;<br/> end<br/> CODE<br/> main<br/>@@ -747,7 +752,7 @@<br/> OUTPUT<br/> <br/> # This is the behavior of Parrot 0.4.3<br/>-# RT#46817 Should there be a warning ?<br/>+# RT #46817 Should there be a warning ?<br/> pir_output_is( &lt;&lt;&#39;CODE&#39;, &#39;&#39;, &#39;warn on in main&#39; );<br/> .sub _main :main<br/> .include &quot;warnings.pasm&quot;<br/>@@ -775,7 +780,7 @@<br/> ok<br/> OUTPUT<br/> <br/>-# RT#46819 This is the behavior of Parrot 0.4.3<br/>+# RT #46819 This is the behavior of Parrot 0.4.3<br/> # It looks like core PMCs never emit warning.<br/> # Look in perlundef.t for a more sane test of &#39;warningson&#39; in subs<br/> pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &quot;warn on in sub, turn off in f2&quot; );<br/>@@ -783,7 +788,7 @@<br/> .include &quot;warnings.pasm&quot;<br/> _f1()<br/> $P0 = new &#39;Undef&#39;<br/>- print &quot;back\n&quot;<br/>+ say &quot;back&quot;<br/> print $P0<br/> print &quot;ok\n&quot;<br/> .end<br/>@@ -920,7 +925,7 @@<br/> print &quot;initial\n&quot;<br/> .end<br/> .sub _main :main<br/>- print &quot;main\n&quot;<br/>+ say &quot;main&quot;<br/> .end<br/> CODE<br/> my $descr = &#39;:immediate :postcomp&#39;;<br/>@@ -970,8 +975,10 @@<br/> nofoo/<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;test_l1.pir&quot; or die &quot;Can&#39;t write test_l1.pir&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, my $l1_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+(my $l1_pbc = $l1_pir) =~ s/\.pir/.pbc/;<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .sub l11 :load<br/> print &quot;l11\n&quot;<br/> .end<br/>@@ -980,10 +987,12 @@<br/> print &quot;l12\n&quot;<br/> .end<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/>+<br/>+($TEMP, my $l2_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+(my $l2_pbc = $l2_pir) =~ s/\.pir/.pbc/;<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;test_l2.pir&quot; or die &quot;Can&#39;t write test_l2.pir&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .sub l21 :load<br/> print &quot;l21\n&quot;<br/> .end<br/>@@ -992,22 +1001,20 @@<br/> print &quot;l22\n&quot;<br/> .end<br/> EOF<br/>-close $S;<br/>-<br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o test_l1.pbc test_l1.pir&quot;);<br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o test_l2.pbc test_l2.pir&quot;);<br/>+close $TEMP;<br/> <br/>-END { unlink(qw/ test_l1.pir test_l2.pir test_l1.pbc test_l2.pbc /); }<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $l1_pbc, $l1_pir);<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $l2_pbc, $l2_pir);<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;multiple :load&#39; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;multiple :load&#39; );<br/> .sub main :main<br/>- print &quot;main 1\n&quot;<br/>- load_bytecode &quot;test_l1.pir&quot;<br/>- load_bytecode &quot;test_l2.pir&quot;<br/>- print &quot;main 2\n&quot;<br/>- load_bytecode &quot;test_l1.pbc&quot; # these have to be ignored<br/>- load_bytecode &quot;test_l2.pbc&quot;<br/>- print &quot;main 3\n&quot;<br/>+ say &quot;main 1&quot;<br/>+ load_bytecode &quot;$l1_pir&quot;<br/>+ load_bytecode &quot;$l2_pir&quot;<br/>+ say &quot;main 2&quot;<br/>+ load_bytecode &quot;$l1_pbc&quot; # these have to be ignored<br/>+ load_bytecode &quot;$l2_pbc&quot;<br/>+ say &quot;main 3&quot;<br/> .end<br/> CODE<br/> main 1<br/>@@ -1109,7 +1116,7 @@<br/> OUTPUT<br/> <br/> pir_output_like(<br/>- &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;warn on in main&#39;, todo =&gt; &quot;RT#46819 core undef doesn&#39;t warn here. Should it?&quot; );<br/>+ &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;warn on in main&#39;, todo =&gt; &quot;RT #46819 core undef doesn&#39;t warn here. Should it?&quot; );<br/> .sub &#39;test&#39; :main<br/> .include &quot;warnings.pasm&quot;<br/> warningson .PARROT_WARNINGS_UNDEF_FLAG<br/>@@ -1129,7 +1136,7 @@<br/> _f1()<br/> P0 = new &#39;Undef&#39;<br/> print P0<br/>- print &quot;ok\\n&quot;<br/>+ say &quot;ok&quot;<br/> .end<br/> .sub _f1<br/> warningson .PARROT_WARNINGS_UNDEF_FLAG<br/>@@ -1139,14 +1146,14 @@<br/> OUTPUT<br/> <br/> pir_output_like(<br/>- &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;warn on in sub, turn off in f2&#39;, todo =&gt; &quot;RT#46819 core undef doesn&#39;t warn here. Should it?&quot; );<br/>+ &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;warn on in sub, turn off in f2&#39;, todo =&gt; &quot;RT #46819 core undef doesn&#39;t warn here. Should it?&quot; );<br/> .sub &#39;test&#39; :main<br/> .include &quot;warnings.pasm&quot;<br/> _f1()<br/> P0 = new &#39;Undef&#39;<br/>- print &quot;back\\n&quot;<br/>+ say &quot;back&quot;<br/> print P0<br/>- print &quot;ok\\n&quot;<br/>+ say &quot;ok&quot;<br/> .end<br/> .sub _f1<br/> warningson .PARROT_WARNINGS_UNDEF_FLAG<br/>@@ -1163,7 +1170,7 @@<br/> <br/> pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;:postcomp&#39; );<br/> .sub main :main<br/>- print &quot;main\n&quot;<br/>+ say &quot;main&quot;<br/> .end<br/> .sub pc :postcomp<br/> print &quot;pc\n&quot;<br/>@@ -1302,7 +1309,7 @@<br/> .end<br/> <br/> .sub main :main<br/>- print &quot;main\n&quot;<br/>+ say &quot;main&quot;<br/> .end<br/> CODE<br/> in inited<br/><br/>Modified: trunk/t/pmc/sys.t<br/>==============================================================================<br/>--- trunk/t/pmc/sys.t (original)<br/>+++ trunk/t/pmc/sys.t Sun Oct 12 18:46:25 2008<br/>@@ -1,11 +1,14 @@<br/> #! perl<br/>-# Copyright (C) 2001-2005, The Perl Foundation.<br/>+# Copyright (C) 2001-2008, The Perl Foundation.<br/> # $Id$<br/> <br/> use strict;<br/> use warnings;<br/> use lib qw( . lib ../lib ../../lib );<br/>+<br/> use Test::More;<br/>+use File::Temp &#39;tempfile&#39;;<br/>+<br/> use Parrot::Test tests =&gt; 2;<br/> <br/> =head1 NAME<br/>@@ -22,18 +25,16 @@<br/> <br/> =cut<br/> <br/>-END {<br/>- unlink &quot;temp.pir&quot;;<br/>-}<br/>+my (undef, $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/> <br/>-pir_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;OUT, &quot;spawnw, _config&quot; );<br/>+pir_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;OUT, &quot;spawnw, _config&quot; );<br/> <br/> .sub _test :main<br/> .local pmc O<br/>- open O, &quot;temp.pir&quot;, &quot;&gt;&quot;<br/>- print O, &quot;.sub _main :main\n&quot;<br/>- print O, &quot;\tprint \&quot;Hello, World!\\n\&quot;\n&quot;<br/>- print O, &quot;.end\n&quot;<br/>+ open O, &quot;$temp_pir&quot;, &quot;&gt;&quot;<br/>+ print O, &quot;.sub _main :main\\n&quot;<br/>+ print O, &quot;\tsay \\&quot;Hello, World!\\&quot;\\n&quot;<br/>+ print O, &quot;.end\\n&quot;<br/> close O<br/> .local pmc conf_hash<br/> conf_hash = _config()<br/>@@ -45,10 +46,9 @@<br/> cmd = &#39;.&#39;<br/> cmd .= slash<br/> cmd .= parrot<br/>- cmd .= &quot; temp.pir&quot;<br/>- spawnw $I0, cmd<br/>- print $I0<br/>- print &quot;\n&quot;<br/>+ cmd .= &quot; $temp_pir&quot;<br/>+ spawnw \$I0, cmd<br/>+ say \$I0<br/> .end<br/> <br/> .include &quot;library/config.pir&quot;<br/><br/>Modified: trunk/t/src/extend.t<br/>==============================================================================<br/>--- trunk/t/src/extend.t (original)<br/>+++ trunk/t/src/extend.t Sun Oct 12 18:46:25 2008<br/>@@ -7,6 +7,8 @@<br/> use lib qw( . lib ../lib ../../lib );<br/> <br/> use Test::More;<br/>+use File::Temp &#39;tempfile&#39;;<br/>+<br/> use Parrot::Test;<br/> use Parrot::Config;<br/> <br/>@@ -390,9 +392,9 @@<br/> 6<br/> OUTPUT<br/> <br/>-my $temp = &#39;temp&#39;;<br/>-open my $S, &#39;&gt;&#39;, &quot;$temp.pasm&quot; or die &quot;Can&#39;t write $temp.pasm&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+my ($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub _sub1:<br/> get_params &quot;&quot;<br/> printerr &quot;in sub1\n&quot;<br/>@@ -405,12 +407,13 @@<br/> set_returns &quot;&quot;<br/> returncc<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/> # compile to pbc<br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o $temp.pbc $temp.pasm&quot;);<br/>+my (undef, $temp_pbc) = tempfile( SUFFIX =&gt; &#39;.pbc&#39; );<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $temp_pbc, $temp_pasm);<br/> <br/>-c_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;call a parrot sub&#39; );<br/>+c_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;call a parrot sub&#39; );<br/> <br/> #include &lt;parrot/parrot.h&gt;<br/> #include &lt;parrot/embed.h&gt;<br/>@@ -437,14 +440,14 @@<br/> static opcode_t*<br/> the_test(Parrot_Interp interp, opcode_t *cur_op, opcode_t *start)<br/> {<br/>- PackFile *pf = Parrot_readbc(interp, &quot;temp.pbc&quot;);<br/>+ PackFile *pf = Parrot_readbc(interp, &quot;$temp_pbc&quot;);<br/> STRING *name = const_string(interp, &quot;_sub1&quot;);<br/> PMC *sub, *arg;<br/> <br/> Parrot_loadbc(interp, pf);<br/> sub = Parrot_find_global_cur(interp, name);<br/> Parrot_call_sub(interp, sub, &quot;v&quot;);<br/>- Parrot_eprintf(interp, &quot;back\n&quot;);<br/>+ Parrot_eprintf(interp, &quot;back\\n&quot;);<br/> <br/> /* win32 seems to buffer stderr ? */<br/> PIO_flush(interp, PIO_STDERR(interp));<br/>@@ -457,7 +460,7 @@<br/> string_from_cstring(interp, &quot;hello &quot;, 0));<br/> <br/> Parrot_call_sub(interp, sub, &quot;vP&quot;, arg);<br/>- Parrot_eprintf(interp, &quot;back\n&quot;);<br/>+ Parrot_eprintf(interp, &quot;back\\n&quot;);<br/> <br/> return NULL;<br/> }<br/>@@ -468,8 +471,9 @@<br/> back<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp.pasm&quot; or die &quot;Can&#39;t write $temp.pasm&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, $temp_pasm) = tempfile( SUFFIX =&gt; &#39;.pasm&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .pcc_sub _sub1:<br/> get_params &quot;&quot;<br/> printerr &quot;in sub1\n&quot;<br/>@@ -477,13 +481,12 @@<br/> printerr &quot;never\n&quot;<br/> returncc<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/> # compile to pbc<br/>-unlink &quot;$temp.pbc&quot;;<br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o $temp.pbc $temp.pasm&quot;);<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $temp_pbc, $temp_pasm);<br/> <br/>-c_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;call a parrot sub, catch exception&#39; );<br/>+c_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;call a parrot sub, catch exception&#39; );<br/> <br/> #include &lt;parrot/parrot.h&gt;<br/> #include &lt;parrot/embed.h&gt;<br/>@@ -511,7 +514,7 @@<br/> static opcode_t*<br/> the_test(Parrot_Interp interp, opcode_t *cur_op, opcode_t *start)<br/> {<br/>- PackFile *pf = Parrot_readbc(interp, &quot;temp.pbc&quot;);<br/>+ PackFile *pf = Parrot_readbc(interp, &quot;$temp_pbc&quot;);<br/> STRING *name = const_string(interp, &quot;_sub1&quot;);<br/> PMC *sub;<br/> Parrot_runloop jump_point;<br/>@@ -520,7 +523,7 @@<br/> sub = Parrot_find_global_cur(interp, name);<br/> <br/> if (setjmp(jump_point.resume)) {<br/>- Parrot_eprintf(interp, &quot;caught\n&quot;);<br/>+ Parrot_eprintf(interp, &quot;caught\\n&quot;);<br/> }<br/> else {<br/> /* pretend the EH was pushed by the sub call. */<br/>@@ -530,7 +533,7 @@<br/> Parrot_call_sub(interp, sub, &quot;v&quot;);<br/> }<br/> <br/>- Parrot_eprintf(interp, &quot;back\n&quot;);<br/>+ Parrot_eprintf(interp, &quot;back\\n&quot;);<br/> <br/> return NULL;<br/> }<br/>@@ -540,8 +543,9 @@<br/> back<br/> OUTPUT<br/> <br/>-open $S, &#39;&gt;&#39;, &quot;$temp.pir&quot; or die &quot;Can&#39;t write $temp.pir&quot;;<br/>-print $S &lt;&lt;&#39;EOF&#39;;<br/>+($TEMP, my $temp_pir) = tempfile( SUFFIX =&gt; &#39;.pir&#39; );<br/>+<br/>+print $TEMP &lt;&lt;&#39;EOF&#39;;<br/> .sub main :main<br/> .param pmc argv<br/> <br/>@@ -576,13 +580,12 @@<br/> .return( sum )<br/> .end<br/> EOF<br/>-close $S;<br/>+close $TEMP;<br/> <br/> # compile to pbc<br/>-unlink &quot;$temp.pbc&quot;;<br/>-system(&quot;.$PConfig{slash}parrot$PConfig{exe} -o $temp.pbc $temp.pir&quot;);<br/>+system(&quot;.$PConfig{slash}parrot$PConfig{exe}&quot;, &#39;-o&#39;, $temp_pbc, $temp_pir);<br/> <br/>-c_output_is( &lt;&lt;&#39;CODE&#39;, &lt;&lt;&#39;OUTPUT&#39;, &#39;eval code through a parrot sub - #39669&#39; );<br/>+c_output_is( &lt;&lt;&quot;CODE&quot;, &lt;&lt;&#39;OUTPUT&#39;, &#39;eval code through a parrot sub - #39669&#39; );<br/> <br/> #include &lt;parrot/parrot.h&gt;<br/> #include &lt;parrot/embed.h&gt;<br/>@@ -591,18 +594,18 @@<br/> main(int argc, char* argv[])<br/> {<br/> Parrot_PackFile packfile;<br/>- char * code[] = { &quot;.sub foo\nprint\&quot;Hello from foo!\\n\&quot;\n.end\n&quot; };<br/>+ char * code[] = { &quot;.sub foo\\nsay \\&quot;Hello from foo!\\&quot;\\n.end\\n&quot; };<br/> <br/> Parrot_Interp interp = Parrot_new(NULL);<br/> if (!interp) {<br/>- printf( &quot;Hiss\n&quot; );<br/>+ printf( &quot;Hiss\\n&quot; );<br/> return 1;<br/> }<br/> <br/>- packfile = Parrot_readbc( interp, &quot;temp.pbc&quot; );<br/>+ packfile = Parrot_readbc( interp, &quot;$temp_pbc&quot; );<br/> <br/> if (!packfile) {<br/>- printf( &quot;Boo\n&quot; );<br/>+ printf( &quot;Boo\\n&quot; );<br/> return 1;<br/> }<br/> <br/>@@ -681,7 +684,7 @@<br/> return 1;<br/> }<br/> <br/>- pf = Parrot_readbc( interp, &quot;$temp.pbc&quot; );<br/>+ pf = Parrot_readbc( interp, &quot;$temp_pbc&quot; );<br/> Parrot_loadbc( interp, pf );<br/> <br/> sub = Parrot_find_global_cur( interp, const_string( interp, &quot;add&quot; ) );<br/>@@ -748,8 +751,6 @@<br/> Destroying interp 2<br/> OUTPUT<br/> <br/>-unlink &quot;$temp.pasm&quot;, &quot;$temp.pir&quot;, &quot;$temp.pbc&quot; unless $ENV{POSTMORTEM};<br/>-<br/> # Local Variables:<br/> # mode: cperl<br/> # cperl-indent-level: 4<br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32312.html Sun, 12 Oct 2008 18:46:43 +0000 [svn:parrot] r31917 - in trunk: include/parrot src by chromatic Author: chromatic<br/>Date: Sun Oct 12 16:44:22 2008<br/>New Revision: 31917<br/><br/>Modified:<br/> trunk/include/parrot/debugger.h<br/> trunk/src/debug.c<br/><br/>Log:<br/>[debug] Cleaned up some signedness and conversion warnings in the debugger.<br/><br/>Modified: trunk/include/parrot/debugger.h<br/>==============================================================================<br/>--- trunk/include/parrot/debugger.h (original)<br/>+++ trunk/include/parrot/debugger.h Sun Oct 12 16:44:22 2008<br/>@@ -166,7 +166,7 @@<br/> PDB_file_t *file;<br/> PDB_breakpoint_t *breakpoint;<br/> PDB_condition_t *watchpoint;<br/>- long breakpoint_skip;<br/>+ unsigned long breakpoint_skip;<br/> char *cur_command;<br/> char *last_command;<br/> opcode_t *cur_opcode;<br/>@@ -265,7 +265,7 @@<br/> <br/> size_t PDB_disassemble_op(PARROT_INTERP,<br/> ARGOUT(char *dest),<br/>- int space,<br/>+ size_t space,<br/> ARGIN(const op_info_t *info),<br/> ARGIN(const opcode_t *op),<br/> ARGMOD_NULLOK(PDB_file_t *file),<br/>@@ -284,7 +284,7 @@<br/> PARROT_WARN_UNUSED_RESULT<br/> PARROT_CAN_RETURN_NULL<br/> PARROT_MALLOC<br/>-char * PDB_escape(ARGIN(const char *string), INTVAL length)<br/>+char * PDB_escape(ARGIN(const char *string), UINTVAL length)<br/> __attribute__nonnull__(1);<br/> <br/> void PDB_eval(PARROT_INTERP, ARGIN(const char *command))<br/>@@ -341,7 +341,7 @@<br/> void PDB_set_break(PARROT_INTERP, ARGIN_NULLOK(const char *command))<br/> __attribute__nonnull__(1);<br/> <br/>-void PDB_skip_breakpoint(PARROT_INTERP, long i)<br/>+void PDB_skip_breakpoint(PARROT_INTERP, unsigned long i)<br/> __attribute__nonnull__(1);<br/> <br/> void PDB_trace(PARROT_INTERP, ARGIN_NULLOK(const char *command))<br/><br/>Modified: trunk/src/debug.c<br/>==============================================================================<br/>--- trunk/src/debug.c (original)<br/>+++ trunk/src/debug.c Sun Oct 12 16:44:22 2008<br/>@@ -469,7 +469,7 @@<br/> &quot;Add a watchpoint&quot;<br/> };<br/> <br/>-static const DebuggerCmd * get_command(long cmdhash) /* HEADERIZER SKIP */<br/>+static const DebuggerCmd * get_command(unsigned long cmdhash) /* HEADERIZER SKIP */<br/> {<br/> switch ((enum DebugCmd)cmdhash) {<br/> case debug_cmd_break:<br/>@@ -698,7 +698,8 @@<br/> }<br/> <br/> /* create the output STRING */<br/>- *strP = string_make(interp, string_start, str - string_start, NULL, 0);<br/>+ *strP = string_make(interp, string_start, (UINTVAL)(str - string_start),<br/>+ NULL, 0);<br/> <br/> /* skip the closing quote */<br/> if (*str)<br/>@@ -1193,7 +1194,8 @@<br/> <br/> TRACEDEB_MSG(&quot;PDB_run_command&quot;);<br/> <br/>- cmd= get_command(c);<br/>+ cmd = get_command(c);<br/>+<br/> if (cmd) {<br/> (* cmd-&gt;func)(pdb, cmdline);<br/> return 0;<br/>@@ -1513,8 +1515,9 @@<br/> #if TRACE_DEBUGGER<br/> fprintf(stderr, &quot;PDB_break: &#39;%s&#39;\n&quot;, str);<br/> #endif<br/>- condition-&gt;value = string_make(interp,<br/>- str, i - 1, NULL, 0);<br/>+ condition-&gt;value = string_make(interp, str, (UINTVAL)(i - 1),<br/>+ NULL, 0);<br/>+<br/> condition-&gt;type |= PDB_cond_const;<br/> }<br/> else if (condition-&gt;type &amp; PDB_cond_pmc) {<br/>@@ -1724,11 +1727,13 @@<br/> /* Skip any breakpoint? */<br/> if (command)<br/> ln = get_ulong(&amp; command, 0);<br/>+<br/> if (ln != 0) {<br/> if (!pdb-&gt;breakpoint) {<br/> PIO_eprintf(pdb-&gt;debugger, &quot;No breakpoints to skip\n&quot;);<br/> return;<br/> }<br/>+<br/> PDB_skip_breakpoint(interp, ln);<br/> }<br/> <br/>@@ -1930,7 +1935,7 @@<br/> */<br/> <br/> void<br/>-PDB_skip_breakpoint(PARROT_INTERP, long i)<br/>+PDB_skip_breakpoint(PARROT_INTERP, unsigned long i)<br/> {<br/> #if TRACE_DEBUGGER<br/> fprintf(stderr, &quot;PDB_skip_breakpoint: %li\n&quot;, i);<br/>@@ -2175,7 +2180,7 @@<br/> PARROT_CAN_RETURN_NULL<br/> PARROT_MALLOC<br/> char *<br/>-PDB_escape(ARGIN(const char *string), INTVAL length)<br/>+PDB_escape(ARGIN(const char *string), UINTVAL length)<br/> {<br/> const char *end;<br/> char *_new, *fill;<br/>@@ -2295,7 +2300,7 @@<br/> */<br/> <br/> size_t<br/>-PDB_disassemble_op(PARROT_INTERP, ARGOUT(char *dest), int space,<br/>+PDB_disassemble_op(PARROT_INTERP, ARGOUT(char *dest), size_t space,<br/> ARGIN(const op_info_t *info), ARGIN(const opcode_t *op),<br/> ARGMOD_NULLOK(PDB_file_t *file), ARGIN_NULLOK(const opcode_t *code_start),<br/> int full_name)<br/>@@ -3153,6 +3158,7 @@<br/> parse_command(cmdline, &amp;c);<br/> <br/> cmd = get_command(c);<br/>+<br/> if (cmd) {<br/> PIO_eprintf(interp-&gt;pdb-&gt;debugger, &quot;%s\n&quot;, cmd-&gt;help);<br/> }<br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32311.html Sun, 12 Oct 2008 16:44:32 +0000 [svn:parrot] r31916 - in trunk: . languages/perl6/config/makefiles languages/perl6/t languages/perl6/tools by moritz Author: moritz<br/>Date: Sun Oct 12 12:27:23 2008<br/>New Revision: 31916<br/><br/>Added:<br/> trunk/languages/perl6/t/spectest.data<br/> - copied unchanged from r31914, /trunk/languages/perl6/t/spectest_regression.data<br/>Removed:<br/> trunk/languages/perl6/t/spectest_regression.data<br/> trunk/languages/perl6/tools/fudge_purity_inspector.pl<br/>Modified:<br/> trunk/MANIFEST<br/> trunk/languages/perl6/config/makefiles/root.in<br/> trunk/languages/perl6/tools/autounfudge.pl<br/> trunk/languages/perl6/tools/test_summary.pl<br/> trunk/languages/perl6/tools/update_passing_test_data.pl<br/><br/>Log:<br/>[rakudo] rename t/spectest_regression.data to t/spectest.data and update<br/>tools/*. Also removed tools/fudge_purity_inspector.pl which doesn&#39;t make sense<br/>any more<br/><br/><br/>Modified: trunk/MANIFEST<br/>==============================================================================<br/>--- trunk/MANIFEST (original)<br/>+++ trunk/MANIFEST Sun Oct 12 12:27:23 2008<br/>@@ -1,7 +1,7 @@<br/> # ex: set ro:<br/> # $Id$<br/> #<br/>-# generated by tools/dev/mk_manifest_and_skip.pl Wed Oct 8 23:45:51 2008 UT<br/>+# generated by tools/dev/mk_manifest_and_skip.pl Sun Oct 12 19:24:12 2008 UT<br/> #<br/> # See tools/dev/install_files.pl for documentation on the<br/> # format of this file.<br/>@@ -2171,9 +2171,8 @@<br/> languages/perl6/t/pmc/perl6multisub-basic.t [perl6]<br/> languages/perl6/t/pmc/perl6multisub-tiebreak.t [perl6]<br/> languages/perl6/t/pmc/perl6multisub-type.t [perl6]<br/>-languages/perl6/t/spectest_regression.data [perl6]<br/>+languages/perl6/t/spectest.data [perl6]<br/> languages/perl6/tools/autounfudge.pl [perl6]<br/>-languages/perl6/tools/fudge_purity_inspector.pl [perl6]<br/> languages/perl6/tools/progress-graph.pl [perl6]<br/> languages/perl6/tools/test_summary.pl [perl6]<br/> languages/perl6/tools/update_passing_test_data.pl [perl6]<br/><br/>Modified: trunk/languages/perl6/config/makefiles/root.in<br/>==============================================================================<br/>--- trunk/languages/perl6/config/makefiles/root.in (original)<br/>+++ trunk/languages/perl6/config/makefiles/root.in Sun Oct 12 12:27:23 2008<br/>@@ -206,11 +206,11 @@<br/> <br/> # Run the spectests that we know work.<br/> spectest_regression: spectest<br/>-spectest: all t/spec t/spectest_regression.data<br/>+spectest: all t/spec t/spectest.data<br/> -cd t/spec &amp;&amp; svn up<br/>- $(HARNESS_WITH_FUDGE_JOBS) --tests-from-file=t/spectest_regression.data<br/>+ $(HARNESS_WITH_FUDGE_JOBS) --tests-from-file=t/spectest.data<br/> <br/>-fulltest: coretest spectest_regression codetest<br/>+fulltest: coretest spectest codetest<br/> <br/> # Run the tests in t/localtest.data<br/> localtest: all t/spec t/localtest.data<br/><br/>Modified: trunk/languages/perl6/tools/autounfudge.pl<br/>==============================================================================<br/>--- trunk/languages/perl6/tools/autounfudge.pl (original)<br/>+++ trunk/languages/perl6/tools/autounfudge.pl Sun Oct 12 12:27:23 2008<br/>@@ -8,7 +8,7 @@<br/> <br/> =head1 DESCRIPTION<br/> <br/>-This tool runs the non-pure tests of the C&lt;spectest_regression&gt; make target,<br/>+This tool runs the non-pure tests of the C&lt;spectest&gt; make target,<br/> automatically creates files with less fudges, runs them again, and if the<br/> modified tests succeeds, it adds a patch to C&lt;autounfudge.patch&gt; that, when<br/> applied as C&lt;&lt; patch -p0 &lt; autunfudge.patch &gt;&gt;, removes the superflous fudge<br/>@@ -78,7 +78,7 @@<br/> <br/> my @files;<br/> <br/>-$specfile = &#39;t/spectest_regression.data&#39; if $auto;<br/>+$specfile = &#39;t/spectest.data&#39; if $auto;<br/> <br/> if ($specfile){<br/> @files = read_specfile($specfile);<br/>@@ -190,7 +190,7 @@<br/> --debug Enable debug output<br/> --impl impl Specify a different implementation<br/> --specfile file Specification file to read filenames from<br/>- --auto use t/spectest_regression.data for --specfile<br/>+ --auto use t/spectest.data for --specfile<br/> --keep-env Keep PERL6LIB environment variable.<br/> --exclude regex Don&#39;t run the tests that match regex<br/> USAGE<br/><br/>Modified: trunk/languages/perl6/tools/test_summary.pl<br/>==============================================================================<br/>--- trunk/languages/perl6/tools/test_summary.pl (original)<br/>+++ trunk/languages/perl6/tools/test_summary.pl Sun Oct 12 12:27:23 2008<br/>@@ -3,9 +3,9 @@<br/> # Copyright (C) 2004-2008, The Perl Foundation.<br/> # $Id$<br/> <br/>-## The &quot;make spectest_regression&quot; target tells us how many<br/>+## The &quot;make spectest&quot; target tells us how many<br/> ## tests we failed (hopefully zero!), but doesn&#39;t say how<br/>-## many were actually passed. This script runs the spectest_regression<br/>+## many were actually passed. This script runs the spectest<br/> ## tests and summarizes planned, actual, passed, failed, todoed,<br/> ## and skipped test results.<br/> ##<br/>@@ -18,7 +18,7 @@<br/> use strict;<br/> use warnings;<br/> <br/>-my $testlist = $ARGV[0] || &#39;t/spectest_regression.data&#39;;<br/>+my $testlist = $ARGV[0] || &#39;t/spectest.data&#39;;<br/> <br/> my $fh;<br/> open($fh, &#39;&lt;&#39;, $testlist) || die &quot;Can&#39;t read $testlist: $!&quot;;<br/><br/>Modified: trunk/languages/perl6/tools/update_passing_test_data.pl<br/>==============================================================================<br/>--- trunk/languages/perl6/tools/update_passing_test_data.pl (original)<br/>+++ trunk/languages/perl6/tools/update_passing_test_data.pl Sun Oct 12 12:27:23 2008<br/>@@ -5,13 +5,13 @@<br/> =head1 DESCRIPTION<br/> <br/> This tool runs the same test that C&lt;make spectest&gt; would, except those that<br/>-C&lt;make spectest_regression&gt; runs.<br/>+C&lt;make spectest&gt; runs.<br/> <br/> For each file that passes at least one test (criterion might change in future)<br/> it prints out a short summary about the status of this file.<br/> <br/> This is primarily used to identify tests that could be added to<br/>-F&lt;t/spectest_regression.data&gt;, and those that are worth a closer look. But<br/>+F&lt;t/spectest.data&gt;, and those that are worth a closer look. But<br/> please don&#39;t add them blindly just because they all pass - chances are that<br/> there&#39;s a good reason for them not already being included.<br/> <br/>@@ -31,7 +31,7 @@<br/> <br/> my %not_process;<br/> {<br/>- my @not_process = read_specfile(&#39;t/spectest_regression.data&#39;);<br/>+ my @not_process = read_specfile(&#39;t/spectest.data&#39;);<br/> @not_process{@not_process} = (1) x @not_process;<br/> }<br/> <br/> http://www.nntp.perl.org/group/perl.cvs.parrot/2008/10/msg32310.html Sun, 12 Oct 2008 12:27:39 +0000 [svn:parrot] r31915 - in trunk/languages/perl6: . config/makefiles by moritz Author: moritz<br/>Date: Sun Oct 12 12:19:08 2008<br/>New Revision: 31915<br/><br/>Modified:<br/> trunk/languages/perl6/README<br/> trunk/languages/perl6/config/makefiles/root.in<br/><br/>Log:<br/>[rakudo] rename test targets<br/> * spectest_regression -&gt; spectest<br/> * spectest -&gt; spectest_full<br/>spectest_regression remains as an alias for spectest for backwards<br/>compatibility<br/><br/><br/>Modified: trunk/languages/perl6/README<br/>==============================================================================<br/>--- trunk/languages/perl6/README (original)<br/>+++ trunk/languages/perl6/README Sun Oct 12 12:19:08 2008<br/>@@ -45,10 +45,10 @@<br/> to make sure that the Rakudo compiler is basically working and that<br/> it&#39;s capable of running a simple test harness.<br/> <br/>-Running &quot;make spectest_regression&quot; will import relevant portions<br/>+Running &quot;make spectest&quot; will import relevant portions<br/> of the &quot;official Perl 6 test suite&quot; from the Pugs repository<br/>-(http://svn.pugscode.org/pugs/t/spec/) and run all tests from<br/>-there.<br/>+(http://svn.pugscode.org/pugs/t/spec/) and run all of these tests that<br/>+are currently known to pass.<br/> <br/> At present we do not have any plans to directly store the<br/> official test suite as part of the Rakudo/Parrot repository,<br/><br/>Modified: trunk/languages/perl6/config/makefiles/root.in<br/>==============================================================================<br/>--- trunk/languages/perl6/config/makefiles/root.in (original)<br/>+++ trunk/languages/perl6/config/makefiles/root.in Sun Oct 12 12:19:08 2008<br/>@@ -165,8 +165,9 @@<br/> @echo &quot; coretest: Run rakudo&#39;s core tests.&quot;<br/> @echo &quot; codetest: Run Parrot&#39;s code tests.&quot;<br/> @echo &quot; testclean: Clean up test results.&quot;<br/>- @echo &quot; spectest: Run the official Perl 6 tests.&quot;<br/>- @echo &quot; spectest_regression: Run the tests of the official test suite that are known to pass.&quot;<br/>+ @echo &quot; spectest: Run the tests of the official test suite that are known to pass.&quot;<br/>+ @echo &quot; spectest: Run the tests of the official test suite that are known to pass.&quot;<br/>+ @echo &quot; spectest_full: Run all tests of the official test suite&quot;<br/> @echo &quot; localtest: Run the official tests given in t/localtest.data.&quot;<br/> @echo &quot; fulltest: Run coretest, spectest_regress