Author: jonathan
Date: Fri Jan 9 15:39:13 2009
New Revision: 35323
Added:
trunk/languages/perl6/src/classes/UnderConstructionProto.pir (contents,
props changed)
Modified:
trunk/MANIFEST
trunk/languages/perl6/config/makefiles/root.in
trunk/languages/perl6/src/classes/Abstraction.pir
trunk/languages/perl6/src/parser/methods.pir
Log:
[rakudo] Get an UnderConstructionProto class added, and create it. However,
don't put it in the namespace just yet - that causes breakage.
Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST (original)
+++ trunk/MANIFEST Fri Jan 9 15:39:13 2009
@@ -2161,6 +2161,7 @@
languages/perl6/src/classes/Signature.pir [perl6]
languages/perl6/src/classes/Str.pir [perl6]
languages/perl6/src/classes/Sub.pir [perl6]
+languages/perl6/src/classes/UnderConstructionProto.pir [perl6]
languages/perl6/src/classes/Whatever.pir [perl6]
languages/perl6/src/ops/perl6.ops [perl6]
languages/perl6/src/parser/actions.pm [perl6]
Modified: trunk/languages/perl6/config/makefiles/root.in
==============================================================================
--- trunk/languages/perl6/config/makefiles/root.in (original)
+++ trunk/languages/perl6/config/makefiles/root.in Fri Jan 9 15:39:13 2009
@@ -54,6 +54,7 @@
src/classes/Associative.pir \
src/classes/Callable.pir \
src/classes/Any.pir \
+ src/classes/UnderConstructionProto.pir \
src/classes/Bool.pir \
src/classes/Str.pir \
src/classes/Num.pir \
Modified: trunk/languages/perl6/src/classes/Abstraction.pir
==============================================================================
--- trunk/languages/perl6/src/classes/Abstraction.pir (original)
+++ trunk/languages/perl6/src/classes/Abstraction.pir Fri Jan 9 15:39:13 2009
@@ -20,4 +20,3 @@
# fill-column: 100
# End:
# vim: expandtab shiftwidth=4 ft=pir:
-
Added: trunk/languages/perl6/src/classes/UnderConstructionProto.pir
==============================================================================
--- (empty file)
+++ trunk/languages/perl6/src/classes/UnderConstructionProto.pir Fri Jan
9 15:39:13 2009
@@ -0,0 +1,56 @@
+## $Id$
+
+=head1 TITLE
+
+UnderConstructionProto.pir - the UnderConstructionProto class
+
+=head1 DESCRIPTION
+
+Represents a class in the namespace that we're still in the process of
+compiling.
+
+=cut
+
+.namespace ['Perl6' ; 'Compiler' ; 'UnderConstructionProto' ]
+
+.sub 'onload' :anon :init :load
+ .local pmc p6meta, proto
+ p6meta = get_hll_global ['Perl6Object'], '$!P6META'
+ proto = p6meta.'new_class'('Perl6::Compiler::UnderConstructionProto',
'parent'=>'Perl6Object', 'attr'=>'@!ns $!short_name')
+ $P0 = get_hll_global 'Abstraction'
+ p6meta.'add_role'($P0, 'to'=>proto)
+.end
+
+
+=head1 METHODS
+
+=over
+
+=item WHAT
+
+Returns self.
+
+=cut
+
+.sub 'WHAT' :method
+ .return (self)
+.end
+
+
+=item get_string (vtable method)
+
+Returns the name of the class under construction.
+
+=cut
+
+.sub '' :vtable('get_string')
+ $P0 = getattribute self, '$!short_name'
+ .return ($P0)
+.end
+
+
+# Local Variables:
+# mode: pir
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:
Modified: trunk/languages/perl6/src/parser/methods.pir
==============================================================================
--- trunk/languages/perl6/src/parser/methods.pir (original)
+++ trunk/languages/perl6/src/parser/methods.pir Fri Jan 9 15:39:13 2009
@@ -19,7 +19,19 @@
.namespace [ "Perl6";"Grammar" ]
.sub "add_type" :method
.param string name
- # XXX TODO
+
+ # Parse name.
+ .local pmc ns
+ $P0 = compreg 'Perl6'
+ ns = $P0.'parse_name'(name)
+ name = pop ns
+
+ # Create UnderConstructionProto and insert into the namespace.
+ .local pmc proto
+ $P0 = get_hll_global ['Perl6';'Compiler'], 'UnderConstructionProto'
+ proto = $P0.'new'('ns'=>ns, 'short_name'=>name)
+ # XXX Uncomment this to see breakage.
+ # set_hll_global ns, name, proto
.end