Ticket #219 (closed bug: fixed)
t/tools/pmc2cutils/04-dump_pmc.t, t/tools/pmc2cutils/05-gen_c.t: Test failures
| Reported by: | jkeenan | Owned by: | cotto |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | configure | Version: | |
| Severity: | medium | Keywords: | |
| Cc: | Language: | ||
| Patch status: | Platform: |
Description
Changes made between 35932 and 35937 have started to cause failures in two of the build tools test files found in t/tools/pmc2cutils/. Please see attached file for output of prove on 04-dump_pmc.t and 05-gen_c.t.
A quick scan of the changes in this time frame suggests that the most likely suspect is this revision to lib/Parrot/Pmc2c/Parser.pm.
$ svn diff -r 35932:35937 ./lib
Index: lib/Parrot/Pmc2c/Parser.pm
===================================================================
--- lib/Parrot/Pmc2c/Parser.pm (revision 35932)
+++ lib/Parrot/Pmc2c/Parser.pm (revision 35937)
@@ -76,7 +76,7 @@
my $lineno = count_newlines($preamble) + $chewed_lines + 1;
my $class_init;
- ($lineno, $pmcbody) = find_attrs( $pmc, $pmcbody, $lineno, $filename);
+ ($lineno, $pmcbody) = find_attrs( $pmc, $pmcbody, $lineno, $filename, $pmc2cMain);
($lineno, $class_init) = find_methods($pmc, $pmcbody, $lineno, $filename);
$pmc->postamble( Parrot::Pmc2c::Emitter->text( $post, $filename, $lineno ) );
@@ -90,8 +90,27 @@
}
sub find_attrs {
- my ($pmc, $pmcbody, $lineno, $filename) = @_;
+ my ($pmc, $pmcbody, $lineno, $filename, $pmc2cMain) = @_;
+ #prepend parent ATTRs to this PMC's ATTR list, if possible
+ my $got_attrs_from = '';
+ foreach my $parent ( @{ $pmc->{parents} } ) {
+
+ my $parent_dump = $pmc2cMain->read_dump( lc($parent) . '.dump' );
+
+ if ( $got_attrs_from ne '' && $parent_dump->{has_attribute} ) {
+ die "$filename is trying to extend $got_attrs_from and $parent, ".
+ "but both these PMCs have ATTRs.";
+ }
+
+ if ( $parent_dump->{has_attribute} ) {
+ $got_attrs_from = $parent;
+ foreach my $parent_attrs ( @{ $parent_dump->{attributes} } ) {
+ $pmc->add_attribute($parent_attrs);
+ }
+ }
+ }
+
# backreferences here are all +1 because below the qr is wrapped in quotes
my $attr_re = qr{
^
Here's the most recent svn log on that file:
------------------------------------------------------------------------ r35934 | cotto | 2009-01-23 20:18:43 -0500 (Fri, 23 Jan 2009) | 2 lines [pmc] make ATTRs implicitly be passed down the inheritance chain
Attachments
Change History
Note: See
TracTickets for help on using
tickets.

