diff options
author | doy <doy@tozt.net> | 2009-04-20 00:22:12 -0500 |
---|---|---|
committer | doy <doy@tozt.net> | 2009-04-20 00:22:12 -0500 |
commit | e953fbcde9b98a9f2397dd7e8e36ff4d1beb4757 (patch) | |
tree | 76d83b25e696bb38bed5dcd10961091312e9567b | |
parent | 5581d01f2ce7e1ebc3a80b763abc6971e23560be (diff) | |
download | moosex-nonmoose-e953fbcde9b98a9f2397dd7e8e36ff4d1beb4757.tar.gz moosex-nonmoose-e953fbcde9b98a9f2397dd7e8e36ff4d1beb4757.zip |
don't inline a constructor if inline_constructor => 0 is passed to make_immutable
-rw-r--r-- | lib/MooseX/NonMoose/Meta/Role/Class.pm | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/MooseX/NonMoose/Meta/Role/Class.pm b/lib/MooseX/NonMoose/Meta/Role/Class.pm index cef62d6..e8524a2 100644 --- a/lib/MooseX/NonMoose/Meta/Role/Class.pm +++ b/lib/MooseX/NonMoose/Meta/Role/Class.pm @@ -10,9 +10,11 @@ has replace_constructor => ( around _make_immutable_transformer => sub { my $orig = shift; my $self = shift; - my @args = @_; - unshift @args, replace_constructor => 1 if $self->replace_constructor; - $self->$orig(@args); + my %args = @_; + return $self->$orig(@_) if exists $args{inline_constructor} + && !$args{inline_constructor}; + $args{replace_constructor} = 1 if $self->replace_constructor; + $self->$orig(%args); }; around superclasses => sub { |