develooper Front page | perl.cvs.parrot | Postings from January 2009

[svn:parrot] r35530 - in trunk/languages/perl6: src/builtins src/parser t

From:
jonathan
Date:
January 14, 2009 08:08
Subject:
[svn:parrot] r35530 - in trunk/languages/perl6: src/builtins src/parser t
Message ID:
20090114160833.0C105CB9AE@x12.develooper.com
Author: jonathan
Date: Wed Jan 14 08:08:32 2009
New Revision: 35530

Modified:
   trunk/languages/perl6/src/builtins/guts.pir
   trunk/languages/perl6/src/parser/actions.pm
   trunk/languages/perl6/t/spectest.data

Log:
[rakudo] class C does R[param1, ...] { ... } now works insofar as it chooses the correct role.

Modified: trunk/languages/perl6/src/builtins/guts.pir
==============================================================================
--- trunk/languages/perl6/src/builtins/guts.pir	(original)
+++ trunk/languages/perl6/src/builtins/guts.pir	Wed Jan 14 08:08:32 2009
@@ -518,6 +518,8 @@
     .param pmc metaclass
     .param string type
     .param string name
+    .param pmc pos_args   :slurpy
+    .param pmc named_args :slurpy :named
 
     if type == 'trait_auxiliary:is' goto is
     if type == 'trait_auxiliary:does' goto does
@@ -542,8 +544,7 @@
     $P0 = get_hll_global $P0, $S0
 
     ##  select the correct role based upon any parameters
-    ##  XXX need to pass along params; for now, none.
-    $P0 = $P0.'!select'()
+    $P0 = $P0.'!select'(pos_args :flat, named_args :flat :named)
 
     ##  add it to the class.
     metaclass.'add_role'($P0)

Modified: trunk/languages/perl6/src/parser/actions.pm
==============================================================================
--- trunk/languages/perl6/src/parser/actions.pm	(original)
+++ trunk/languages/perl6/src/parser/actions.pm	Wed Jan 14 08:08:32 2009
@@ -979,6 +979,17 @@
     }
     elsif $sym eq 'does' {
         $trait.push( ~$<name> );
+        if $<EXPR> {
+            for @(build_call($( $<EXPR>[0] ))) {
+                if $_.returns() eq 'Pair' {
+                    $_[1].named($_[0]);
+                    $trait.push($_[0]);
+                }
+                else {
+                    $trait.push($_);
+                }
+            }
+        }
     }
     make $trait;
 }

Modified: trunk/languages/perl6/t/spectest.data
==============================================================================
--- trunk/languages/perl6/t/spectest.data	(original)
+++ trunk/languages/perl6/t/spectest.data	Wed Jan 14 08:08:32 2009
@@ -222,6 +222,7 @@
 S12-role/composition.t
 S12-role/mixin.t
 S12-role/namespaced.t
+S12-role/parameterized-basic.t
 S12-subset/multi-dispatch.t
 S12-subset/subtypes.t
 S16-filehandles/io.t



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About