[svn:parrot] r39390 - in branches/pmc_pct/compilers/pmcc: src/parser t
bacek at svn.parrot.org
bacek at svn.parrot.org
Thu Jun 4 13:00:53 UTC 2009
Author: bacek
Date: Thu Jun 4 13:00:52 2009
New Revision: 39390
URL: https://trac.parrot.org/parrot/changeset/39390
Log:
Implement MULTIs PASTing
Modified:
branches/pmc_pct/compilers/pmcc/src/parser/actions.pm
branches/pmc_pct/compilers/pmcc/t/08-multi.t
Modified: branches/pmc_pct/compilers/pmcc/src/parser/actions.pm
==============================================================================
--- branches/pmc_pct/compilers/pmcc/src/parser/actions.pm Thu Jun 4 13:00:25 2009 (r39389)
+++ branches/pmc_pct/compilers/pmcc/src/parser/actions.pm Thu Jun 4 13:00:52 2009 (r39390)
@@ -92,6 +92,12 @@
elsif $key eq 'method' {
$?PMC.add_method($m.name, $m);
}
+ elsif $key eq 'multi' {
+ $?PMC.add_multi($m.name, $m);
+ }
+ else {
+ $/.panic("Unsupported body part " ~ $m);
+ }
}
method class_init($/) {
@@ -135,7 +141,16 @@
method multi($/) {
#say('MULTI ' ~$<identifier>);
- my $past := PAST::Block.new( :blocktype('declaration'), :node($/) );
+ my $past := PAST::Block.new(
+ :name(~$<c_signature><identifier>),
+ :blocktype('method'),
+ :returns(~$<c_signature><c_type>),
+ :node($/),
+
+ $<c_body>.ast
+ );
+ $past<parameters> := $<c_signature><c_arguments>.ast;
+ make $past;
make $past;
}
Modified: branches/pmc_pct/compilers/pmcc/t/08-multi.t
==============================================================================
--- branches/pmc_pct/compilers/pmcc/t/08-multi.t Thu Jun 4 13:00:25 2009 (r39389)
+++ branches/pmc_pct/compilers/pmcc/t/08-multi.t Thu Jun 4 13:00:52 2009 (r39390)
@@ -17,7 +17,6 @@
(emitter, capture) = get_emitter_and_capture(filename, content, 'past')
ok("MULTI functions parsed")
-
.end
# Don't forget to update plan!
More information about the parrot-commits
mailing list