package Mouse::Meta::Method::Constructor;
use Mouse::Util qw(:meta); # enables strict and warnings
+use constant _MOUSE_DEBUG => !!$ENV{MOUSE_DEBUG};
+
sub _inline_slot{
my(undef, $self_var, $attr_name) = @_;
return sprintf '%s->{q{%s}}', $self_var, $attr_name;
my $buildall = $class->_generate_BUILDALL($metaclass);
my $buildargs = $class->_generate_BUILDARGS($metaclass);
- my $initializer = $class->_generate_initialize_object($metaclass);
- my $source = sprintf(<<'EOT', __LINE__, __FILE__, $metaclass->name, $buildargs, $buildall);
-#line %d %s
+ my $initializer = $metaclass->{_mouse_cache}{_initialize_object} ||=
+ $class->_generate_initialize_object($metaclass);
+ my $source = sprintf(<<'EOT', __FILE__, $metaclass->name, $buildargs, $buildall);
+#line 1 "%s"
package %s;
sub {
my $class = shift;
return $instance;
}
EOT
- #warn $source;
+ warn $source if _MOUSE_DEBUG;
my $body;
my $e = do{
local $@;
push @res, q{$_->[0]->($instance, $_->[1]) for @triggers;};
}
- my $source = sprintf <<'EOT', __LINE__, __FILE__, $metaclass->name, join "\n", @res;
-#line %d %s
+ my $source = sprintf <<'EOT', __FILE__, $metaclass->name, join "\n", @res;
+#line 1 "%s"
package %s;
sub {
my($meta, $instance, $args, $is_cloning) = @_;
return $instance;
}
EOT
- warn $source if $ENV{MOUSE_DEBUG};
+ warn $source if _MOUSE_DEBUG;
my $body;
my $e = do {
local $@;
=head1 VERSION
-This document describes Mouse version 0.73
+This document describes Mouse version 0.76
=head1 SEE ALSO