the __MOP__ slot should be used for any weak class, not just anon
[gitmo/Class-MOP.git] / lib / Class / MOP / Class.pm
index 6648927..a40c1c8 100644 (file)
@@ -604,7 +604,7 @@ sub _construct_instance {
     }
     # NOTE:
     # this will only work for a HASH instance type
-    if ($class->is_anon_class) {
+    if (Class::MOP::metaclass_is_weak($class->name)) {
         (reftype($instance) eq 'HASH')
             || confess "Currently only HASH based instances are supported with instance of anon-classes";
         # NOTE:
@@ -686,7 +686,7 @@ sub _force_rebless_instance {
     $old_metaclass->rebless_instance_away($instance, $self, %params)
         if $old_metaclass;
 
-    if ($old_metaclass->is_anon_class) {
+    if (Class::MOP::metaclass_is_weak($old_metaclass->name)) {
         delete $instance->{__MOP__};
     }
 
@@ -700,7 +700,7 @@ sub _force_rebless_instance {
 
     # NOTE:
     # this will only work for a HASH instance type
-    if ($self->is_anon_class) {
+    if (Class::MOP::metaclass_is_weak($self->name)) {
         (reftype($instance) eq 'HASH')
             || confess "Currently only HASH based instances are supported with instance of anon-classes";
         # NOTE: