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'),

Reply via email to