make lack of a meta method testable
[gitmo/Class-MOP.git] / lib / Class / MOP / Class.pm
index 2eb9312..15f6801 100644 (file)
@@ -492,6 +492,14 @@ sub create {
 
     # FIXME totally lame
     $meta->add_method('meta' => sub {
+        if (Class::MOP::DEBUG_NO_META()) {
+            my ($self) = @_;
+            if (my $meta = try { $self->SUPER::meta }) {
+                return $meta if $meta->isa('Class::MOP::Class');
+            }
+            confess "'meta' method called by MOP internals"
+                if caller =~ /Class::MOP|metaclass/;
+        }
         $class->initialize(ref($_[0]) || $_[0]);
     });
 
@@ -763,7 +771,7 @@ sub get_all_attributes {
 sub superclasses {
     my $self     = shift;
 
-    my $isa = $self->get_package_symbol(
+    my $isa = $self->get_or_add_package_symbol(
         { sigil => '@', type => 'ARRAY', name => 'ISA' } );
 
     if (@_) {