Revert "Merge branch 'master' into topic/symbol-manipulator"
[gitmo/Class-MOP.git] / lib / Class / MOP / Class.pm
index d35f33e..0f80950 100644 (file)
@@ -264,19 +264,13 @@ sub _check_metaclass_compatibility {
         my $current_meta = Class::MOP::get_metaclass_by_name($name);
         return if $current_meta ne $self;
 
-        if(my $isa_ref = $self->get_package_symbol('@ISA')){
-            @{$isa_ref} = ();
-        }
-
-        %{ $self->namespace } = ();
-
         my ($serial_id) = ($name =~ /^$ANON_CLASS_PREFIX(\d+)/o);
-
-        Class::MOP::remove_metaclass_by_name($name);
-
         no strict 'refs';
+        @{$name . '::ISA'} = ();
+        %{$name . '::'}    = ();
         delete ${$ANON_CLASS_PREFIX}{$serial_id . '::'};
-        return;
+
+        Class::MOP::remove_metaclass_by_name($name);
     }
 
 }
@@ -510,9 +504,10 @@ sub rebless_instance_away {
 
 sub superclasses {
     my $self     = shift;
+    my $var_spec = { sigil => '@', type => 'ARRAY', name => 'ISA' };
     if (@_) {
         my @supers = @_;
-        @{$self->get_package_symbol('@ISA', create => 1)} = @supers;
+        @{$self->get_package_symbol($var_spec)} = @supers;
 
         # NOTE:
         # on 5.8 and below, we need to call
@@ -531,7 +526,7 @@ sub superclasses {
         $self->_check_metaclass_compatibility();
         $self->_superclasses_updated();
     }
-    @{$self->get_package_symbol('@ISA', create => 1)};
+    @{$self->get_package_symbol($var_spec)};
 }
 
 sub _superclasses_updated {