Author: jonathan Date: Tue Jan 6 14:41:52 2009 New Revision: 35085 Modified: branches/rvar/languages/perl6/src/builtins/guts.pir branches/rvar/languages/perl6/src/parser/actions.pm Log: [rakudo] Restore handling of trait_auxiliary:does. Modified: branches/rvar/languages/perl6/src/builtins/guts.pir ============================================================================== --- branches/rvar/languages/perl6/src/builtins/guts.pir (original) +++ branches/rvar/languages/perl6/src/builtins/guts.pir Tue Jan 6 14:41:52 2009 @@ -422,6 +422,11 @@ .param string type .param string name + if type == 'trait_auxiliary:is' goto is + if type == 'trait_auxiliary:does' goto does + 'die'("Unknown trait auxiliary ", type) + + is: ## get the (parrot)class object associated with name $P0 = compreg 'Perl6' $P0 = $P0.'parse_name'(name) @@ -430,6 +435,18 @@ ## add it as parent to metaclass metaclass.'add_parent'($P0) + .return () + + does: + ## get the role to be composed + $P0 = compreg 'Perl6' + $P0 = $P0.'parse_name'(name) + $S0 = pop $P0 + $P0 = get_hll_global $P0, $S0 + say $P0 + + ## add it to the class. + metaclass.'add_role'($P0) .end Modified: branches/rvar/languages/perl6/src/parser/actions.pm ============================================================================== --- branches/rvar/languages/perl6/src/parser/actions.pm (original) +++ branches/rvar/languages/perl6/src/parser/actions.pm Tue Jan 6 14:41:52 2009 @@ -897,7 +897,7 @@ method trait_auxiliary($/) { my $sym := ~$<sym>; my $trait; - if $sym eq 'is' { + if $sym eq 'is' || $sym eq 'does' { $trait := ~$<name>; } make PAST::Op.new( :name('infix:,'), 'trait_auxiliary:' ~ $sym, $trait );