X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-StrictConstructor.git;a=blobdiff_plain;f=lib%2FMooseX%2FStrictConstructor%2FTrait%2FMethod%2FConstructor.pm;h=ae5d3fb2b9fa3d60f95e33190b3b319fea5f9889;hp=8c368105255fb0ef3b0aa0d287d0d597690b4610;hb=bb64c0458ed377f9a5a7f4d4071dee8cf0821312;hpb=ce8f6d73680c9395b9bc5add89f3c6e3be2bc1be diff --git a/lib/MooseX/StrictConstructor/Trait/Method/Constructor.pm b/lib/MooseX/StrictConstructor/Trait/Method/Constructor.pm index 8c36810..ae5d3fb 100644 --- a/lib/MooseX/StrictConstructor/Trait/Method/Constructor.pm +++ b/lib/MooseX/StrictConstructor/Trait/Method/Constructor.pm @@ -1,12 +1,10 @@ package MooseX::StrictConstructor::Trait::Method::Constructor; -use strict; -use warnings; +use Moose::Role; -use B (); -use Carp (); +use namespace::autoclean; -use Moose::Role; +use B (); around '_generate_BUILDALL' => sub { my $orig = shift; @@ -28,14 +26,30 @@ my \%attrs = (@attrs); my \@bad = sort grep { ! \$attrs{\$_} } keys \%{ \$params }; if (\@bad) { - Carp::confess "Found unknown attribute(s) passed to the constructor: \@bad"; + Moose->throw_error("Found unknown attribute(s) passed to the constructor: \@bad"); } EOF return $source; -}; +} 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->associated_metaclass()->get_all_attributes(); + + $attrs{__INSTANCE__} = 1; + + $env->{'%allowed_attrs'} = \%attrs; -no Moose::Role; + return $env; +} if $Moose::VERSION >= 1.9900; 1;