16 use base 'Class::MOP::Class';
19 shift->SUPER::initialize(
21 immutable_trait => 'My::Meta::Class::Immutable::Trait',
27 package My::Meta::Class::Immutable::Trait;
30 use base 'Class::MOP::Class::Immutable::Trait';
32 sub another_method { 42 }
48 __PACKAGE__->meta->add_attribute('foo');
50 __PACKAGE__->meta->make_immutable;
58 use metaclass 'My::Meta';
62 __PACKAGE__->meta->add_attribute('bar');
64 ::is( ::exception { __PACKAGE__->meta->make_immutable }, undef, 'can safely make a class immutable when it has a custom metaclass and immutable trait' );
68 can_ok( Bar->meta, 'another_method' );
69 is( Bar->meta->another_method, 42, 'another_method returns expected value' );
71 [ Bar->meta->superclasses ], ['Foo'],
72 'Bar->meta->superclasses returns expected value after immutabilization'