implement inlined access to the mop slot, to fix immutable anon classes
[gitmo/Class-MOP.git] / t / 048_anon_class_create_init.t
index 4cda746..b362eae 100644 (file)
@@ -40,6 +40,20 @@ my $instance;
 }
 
 {
+    my $meta = Class::MOP::Class->create_anon_class;
+    $meta->make_immutable;
+    $instance = $meta->name->new;
+}
+{
+    my $meta = Class::MOP::class_of($instance);
+    Scalar::Util::weaken($meta);
+    ok($meta, "anon class is kept alive by existing instances (immutable)");
+
+    undef $instance;
+    ok(!$meta, "anon class is collected once instances go away (immutable)");
+}
+
+{
     $instance = Class::MOP::Class->create('Foo')->new_object;
     my $meta = Class::MOP::Class->create_anon_class(superclasses => ['Foo']);
     $meta->rebless_instance($instance);