14 my $object = MyClass->new;
16 # Removing the metaclass simulates the case where the metaclass object
17 # goes out of scope _before_ the object itself, which under normal
18 # circumstances only happens during global destruction.
19 Class::MOP::remove_metaclass_by_name('MyClass');
21 # The bug happened when DEMOLISHALL called
22 # Class::MOP::class_of($object) and did not get a metaclass object
24 is( exception { $object->DESTROY }, undef, 'can call DESTROY on an object without a metaclass object in the CMOP cache' );
27 MyClass->meta->make_immutable;
28 Class::MOP::remove_metaclass_by_name('MyClass');
30 # The bug didn't manifest for immutable objects, but this test should
31 # help us prevent it happening in the future.
32 is( exception { $object->DESTROY }, undef, 'can call DESTROY on an object without a metaclass object in the CMOP cache (immutable version)' );