cvsuser 03/03/04 07:45:36
Modified: languages/imcc imcc.l
languages/imcc/t/syn bsr.t
Log:
.include for PIR code too
Revision Changes Path
1.32 +1 -1 parrot/languages/imcc/imcc.l
Index: imcc.l
===================================================================
RCS file: /cvs/public/parrot/languages/imcc/imcc.l,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -w -r1.31 -r1.32
--- imcc.l 22 Feb 2003 15:12:25 -0000 1.31
+++ imcc.l 4 Mar 2003 15:45:34 -0000 1.32
@@ -214,7 +214,7 @@
return MACRO;
}
-<emit>".include" {
+<*>".include" {
int c;
c = yylex(valp, interp);
1.4 +60 -1 parrot/languages/imcc/t/syn/bsr.t
Index: bsr.t
===================================================================
RCS file: /cvs/public/parrot/languages/imcc/t/syn/bsr.t,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -w -r1.3 -r1.4
--- bsr.t 18 Feb 2003 12:39:28 -0000 1.3
+++ bsr.t 4 Mar 2003 15:45:36 -0000 1.4
@@ -1,6 +1,6 @@
#!perl
use strict;
-use TestCompiler tests => 3;
+use TestCompiler tests => 4;
use Test::More qw(skip);
##############################
@@ -107,3 +107,62 @@
r = 30
s = -10
OUT
+
+##############################
+my $file = '_test.inc';
+open F, ">$file";
+print F <<'EOF';
+.sub _foo # sub foo(int a, int b)
+ saveall
+ .param int a
+ .param int b
+ print "a = "
+ print a
+ print "\n"
+ print "b = "
+ print b
+ print "\n"
+ .local int pl
+ .local int mi
+ pl = a + b
+ mi = a - b
+ .return pl # return (pl, mi)
+ .return mi
+ restoreall
+ ret
+.end
+EOF
+
+output_is(<<'CODE', <<'OUT', "subroutine in external file");
+.sub _main
+ .local int x
+ x = 10
+ .const int y = 20
+
+ .arg y # save args in reversed order
+ .arg x
+ call _foo #(r, s) = _foo(x,y)
+ .local int r
+ .local int s
+ .result s # restore results in reversed order
+ .result r
+
+ print "r = "
+ print r
+ print "\n"
+ print "s = "
+ print s
+ print "\n"
+ end
+.end
+.include "_test.inc"
+CODE
+a = 10
+b = 20
+r = 30
+s = -10
+OUT
+
+END {
+ unlink $file;
+}