sub generate_constructor_method_inline {
my ($class, $meta) = @_;
+ my $associated_metaclass_name = $meta->name;
my @attrs = $meta->compute_all_applicable_attributes;
my $buildall = $class->_generate_BUILDALL($meta);
my $buildargs = $class->_generate_BUILDARGS($meta);
my $code = <<"...";
sub {
my \$class = shift;
+ return \$class->Mouse::Object::new(\@_)
+ if \$class ne '$associated_metaclass_name';
$buildargs;
my \$instance = bless {}, \$class;
$processattrs;
no warnings 'once';
for my $klass ($meta->linearized_isa) {
if (*{ $klass . '::BUILD' }{CODE}) {
- push @code, qq{${klass}::BUILD(\$instance, \$args);};
+ unshift @code, qq{${klass}::BUILD(\$instance, \$args);};
}
}
return join "\n", @code;