Author: jonathan
Date: Wed Jan 7 14:55:35 2009
New Revision: 35181
Modified:
branches/rvar2/languages/perl6/src/builtins/guts.pir
Log:
[rakudo] Since we lie about naming of classes, we need to look up the class
we're extending via its proto-object in !meta_create when we have is also. This
gets us through initialization and we now pass most of S12-class/open.t - until
the last test, where our lies catch up with us and we go and stick methods in
the wrong namespace. Would need to look at trunk to see how on earth this was
resolved there...
Modified: branches/rvar2/languages/perl6/src/builtins/guts.pir
==============================================================================
--- branches/rvar2/languages/perl6/src/builtins/guts.pir (original)
+++ branches/rvar2/languages/perl6/src/builtins/guts.pir Wed Jan 7
14:55:35 2009
@@ -391,13 +391,16 @@
class:
.local pmc metaclass, ns
- ns = get_hll_namespace nsarray
if also goto is_also
+ ns = get_hll_namespace nsarray
metaclass = newclass ns
.return (metaclass)
is_also:
- metaclass = get_class ns
- .return (metaclass)
+ .local pmc proto, p6meta
+ $S0 = shift nsarray
+ proto = get_hll_global nsarray, $S0
+ p6meta = get_hll_global ['Perl6Object'], '$!P6META'
+ .tailcall p6meta.'get_parrotclass'(proto)
role:
.local pmc info, metarole