make this work with (and require) latest Moose, 0.51
[gitmo/MooseX-StrictConstructor.git] / lib / MooseX / StrictConstructor / Meta / Method / Constructor.pm
index 45b1fd8..06d5b10 100644 (file)
@@ -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";