X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-StrictConstructor.git;a=blobdiff_plain;f=lib%2FMooseX%2FStrictConstructor%2FTrait%2FClass.pm;h=f032fe535811432d09fa55399ccb1a25b0116cce;hp=b96e5fd22c84374a027febb82bd55b9e4c65bc0a;hb=f00a034fe06bd519d9f64f2f942d4ff402d0ae87;hpb=bb64c0458ed377f9a5a7f4d4071dee8cf0821312 diff --git a/lib/MooseX/StrictConstructor/Trait/Class.pm b/lib/MooseX/StrictConstructor/Trait/Class.pm index b96e5fd..f032fe5 100644 --- a/lib/MooseX/StrictConstructor/Trait/Class.pm +++ b/lib/MooseX/StrictConstructor/Trait/Class.pm @@ -32,7 +32,7 @@ around new_object => sub { return $instance; }; -around '_inline_BUILDALL' => sub { +around _inline_BUILDALL => sub { my $orig = shift; my $self = shift; @@ -54,6 +54,24 @@ around '_inline_BUILDALL' => sub { ); } if $Moose::VERSION >= 1.9900; +around _eval_environment => sub { + my $orig = shift; + my $self = shift; + + my $env = $self->$orig(); + + my %attrs = map { $_ => 1 } + grep { defined } + map { $_->init_arg() } + $self->get_all_attributes(); + + $attrs{__INSTANCE__} = 1; + + $env->{'%allowed_attrs'} = \%attrs; + + return $env; +} if $Moose::VERSION >= 1.9900; + 1; # ABSTRACT: A role to make immutable constructors strict