X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FStrictConstructor%2FMeta%2FMethod%2FConstructor.pm;h=06d5b104e1610934b69c8a6c7234416ad639e0a8;hb=5c40fb229069279683030c3a30b0cc19a53f877b;hp=45b1fd814bb97d575ef7f74fe8b96711562f9fbd;hpb=583707172fbd74d82c2c079f430555b7a6275237;p=gitmo%2FMooseX-StrictConstructor.git diff --git a/lib/MooseX/StrictConstructor/Meta/Method/Constructor.pm b/lib/MooseX/StrictConstructor/Meta/Method/Constructor.pm index 45b1fd8..06d5b10 100644 --- a/lib/MooseX/StrictConstructor/Meta/Method/Constructor.pm +++ b/lib/MooseX/StrictConstructor/Meta/Method/Constructor.pm @@ -12,15 +12,20 @@ override '_generate_BUILDALL' => sub ## no critic RequireArgUnpacking { my $self = shift; - my $source = $self->SUPER::_generate_BUILDALL(@_); + my $source = super(); $source .= ";\n" if $source; - my @attrs = map { $_->name() . ' => 1,' } @{ $self->attributes() }; + my @attrs = + ( map { "$_ => 1," } + grep { defined } + map { $_->init_arg() } + @{ $self->attributes() } + ); $source .= <<"EOF"; my \%attrs = (@attrs); -my \@bad = sort grep { ! \$attrs{\$_} } keys \%params; +my \@bad = sort grep { ! \$attrs{\$_} } keys \%{ \$params }; if (\@bad) { Carp::confess "Found unknown attribute(s) passed to the constructor: \@bad";