has foo => ( is => "ro" );
- __PACKAGE__->meta->make_immutable;
-
package Bar;
use Moose;
$self->$next( foo => 42 );
};
- __PACKAGE__->meta->make_immutable;
-
package Gorch;
use Moose;
extends qw(Bar);
- __PACKAGE__->meta->make_immutable;
+ package Zoink;
+ use Moose;
+
+ extends qw(Gorch);
+
}
-is( Gorch->new->foo, 42, "around new called" );
+my @classes = qw(Foo Bar Gorch Zoink);
+
+do {
+ is( Foo->new->foo, undef, "base class (" . (Foo->meta->is_immutable ? "immutable" : "mutable") . ")" );
+ is( Bar->new->foo, 42, "around new called on Bar->new (" . (Bar->meta->is_immutable ? "immutable" : "mutable") . ")" );
+ is( Gorch->new->foo, 42, "around new called on Gorch->new (" . (Gorch->meta->is_immutable ? "immutable" : "mutable") . ")" );
+ is( Zoink->new->foo, 42, "around new called Zoink->new (" . (Zoink->meta->is_immutable ? "immutable" : "mutable") . ")" );
+
+ ( shift @classes )->meta->make_immutable;
+} while @classes;