From 31ebce5bff13cf2ede6fe72b921706bdff3d7aff Mon Sep 17 00:00:00 2001 From: pmichaud Date: Sun, 4 Jul 2010 15:01:18 -0500 Subject: [PATCH] Move Abstraction role out of builtins and into core setting. This means we no longer have any roles defined in the builtins. --- build/Makefile.in | 2 +- src/builtins/Abstraction.pir | 41 ------------------------------------ src/builtins/Bool.pir | 3 +-- src/core/Abstraction.pm | 1 + src/core/Bool.pm | 2 +- src/glue/role.pir | 1 + 6 files changed, 5 insertions(+), 45 deletions(-) delete mode 100644 src/builtins/Abstraction.pir create mode 100644 src/core/Abstraction.pm diff --git a/build/Makefile.in b/build/Makefile.in index 3ed73d4575c..b66868a69dd 100644 --- a/build/Makefile.in +++ b/build/Makefile.in @@ -100,7 +100,6 @@ BUILTINS_PIR = \ src/metamodel/GrammarHOW.pir \ src/builtins/Role.pir \ src/builtins/ConcreteRole.pir \ - src/builtins/Abstraction.pir \ src/builtins/Positional.pir \ src/builtins/Iterable.pir \ src/builtins/Iterator.pir \ @@ -171,6 +170,7 @@ CORE_SOURCES = \ src/core/Positional.pm \ src/core/Associative.pm \ src/core/Callable.pm \ + src/core/Abstraction.pm \ src/core/traits.pm \ src/core/metaops.pm \ src/core/operators.pm \ diff --git a/src/builtins/Abstraction.pir b/src/builtins/Abstraction.pir deleted file mode 100644 index 534d5479624..00000000000 --- a/src/builtins/Abstraction.pir +++ /dev/null @@ -1,41 +0,0 @@ -## $Id$ - -=head1 NAME - -src/classes/Abstraction.pir - Abstraction Role - -=head1 DESCRIPTION - -This implements the role Abstraction[]. - -=cut - -.namespace ['Abstraction[]'] - -.sub '' :load :init - # Create a parametric role with 1 possible candidate. - .local pmc role - .const 'Sub' $P0 = '_abstraction_role_body' - role = new ['Perl6Role'] - $P1 = box 'Abstraction' - setattribute role, '$!shortname', $P1 - role.'!add_variant'($P0) - set_hll_global 'Abstraction', role -.end - -.sub '_abstraction_role_body' - .tailcall '!create_parametric_role'("Abstraction[]") -.end -.sub '' :load :init - .local pmc block, llsig - block = get_hll_global ['Abstraction[]'], '_abstraction_role_body' - llsig = allocate_llsig 0 - setprop block, "$!llsig", llsig -.end - -# Local Variables: -# mode: pir -# fill-column: 100 -# End: -# vim: expandtab shiftwidth=4 ft=pir: - diff --git a/src/builtins/Bool.pir b/src/builtins/Bool.pir index f6f33eaec09..62b843ab791 100644 --- a/src/builtins/Bool.pir +++ b/src/builtins/Bool.pir @@ -20,8 +20,7 @@ symbols for C and C. .sub 'onload' :anon :init :load .local pmc p6meta, boolproto, abstraction p6meta = get_hll_global ['Mu'], '$!P6META' - abstraction = get_hll_global 'Abstraction' - boolproto = p6meta.'new_class'('Bool', 'parent'=>'parrot;Boolean Cool', 'does_role'=>abstraction) + boolproto = p6meta.'new_class'('Bool', 'parent'=>'parrot;Boolean Cool') $P0 = boolproto.'new'() $P0 = 0 diff --git a/src/core/Abstraction.pm b/src/core/Abstraction.pm new file mode 100644 index 00000000000..6c4d14ac9f5 --- /dev/null +++ b/src/core/Abstraction.pm @@ -0,0 +1 @@ +role Abstraction { } diff --git a/src/core/Bool.pm b/src/core/Bool.pm index d00b4989edc..c3ef6898a1e 100644 --- a/src/core/Bool.pm +++ b/src/core/Bool.pm @@ -1,4 +1,4 @@ -augment class Bool { +augment class Bool does Abstraction { method Bool { self } method ACCEPTS($topic) { self } diff --git a/src/glue/role.pir b/src/glue/role.pir index e9f1a0a0b40..4388ec21065 100644 --- a/src/glue/role.pir +++ b/src/glue/role.pir @@ -76,6 +76,7 @@ and so forth. Method = get_hll_global 'Method' $I0 = isa Method, 'NameSpace' unless $I0 goto method_check_done + die "Attempt to create role when Method not defined" null Method method_check_done: meths = parrotrole.'methods'()