Author: jonathan
Date: Sat Jul 26 06:42:24 2008
New Revision: 29754
Modified:
trunk/languages/perl6/src/builtins/traits.pir
trunk/languages/perl6/src/parser/actions.pm
Log:
[rakudo] Give a reasonable error message when trying to inherit from a
non-existent class (we need something better eventually, but this beats odd
exceptions and assertion failures).
Modified: trunk/languages/perl6/src/builtins/traits.pir
==============================================================================
--- trunk/languages/perl6/src/builtins/traits.pir (original)
+++ trunk/languages/perl6/src/builtins/traits.pir Sat Jul 26 06:42:24 2008
@@ -18,6 +18,14 @@
.param pmc parent
.param pmc child
.local pmc p6meta
+
+ # Make sure we have a parent class.
+ $I0 = isa parent, 'Class'
+ if $I0 goto parent_ok
+ 'die'("Attempt to inherit from non-existent parent class")
+ parent_ok:
+
+ # Apply it.
p6meta = get_hll_global ['Perl6Object'], '$!P6META'
parent = p6meta.'get_parrotclass'(parent)
addparent child, parent
Modified: trunk/languages/perl6/src/parser/actions.pm
==============================================================================
--- trunk/languages/perl6/src/parser/actions.pm (original)
+++ trunk/languages/perl6/src/parser/actions.pm Sat Jul 26 06:42:24 2008
@@ -1365,7 +1365,8 @@
:name('trait_auxiliary:is'),
PAST::Var.new(
:name(~$_<trait_auxiliary><name>),
- :scope('package')
+ :scope('package'),
+ :viviself('Undef')
),
PAST::Var.new(
:name('$def'),