X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMooseX-UndefTolerant.git;a=blobdiff_plain;f=lib%2FMooseX%2FUndefTolerant%2FConstructor.pm;h=841811d0119e2aebe7f8d7d0c4e19df906585d39;hp=47d81283c857615c8a5846794279d4b4bc094e85;hb=8e67fa0cc9dee4d8ea506e8f7db0c5d6a2ef9917;hpb=8055a64173c89e5129f8ec136acf49d6facab65d diff --git a/lib/MooseX/UndefTolerant/Constructor.pm b/lib/MooseX/UndefTolerant/Constructor.pm index 47d8128..841811d 100644 --- a/lib/MooseX/UndefTolerant/Constructor.pm +++ b/lib/MooseX/UndefTolerant/Constructor.pm @@ -4,15 +4,17 @@ use Moose::Role; around('_generate_slot_initializer', sub { my $orig = shift; my $self = shift; - my $attr = $self->_attributes->[$_[0]]->init_arg; + + # note the key in the params may not match the attr name. + my $key_name = $self->_attributes->[$_[0]]->init_arg; # insert a line of code at the start of the initializer, # clearing the param if it's undefined. - if (defined $attr) { + if (defined $key_name) { my $tolerant_code = - qq# delete \$params->{'$attr'} unless # . - qq# exists \$params->{'$attr'} && defined \$params->{'$attr'};\n#; + qq# delete \$params->{'$key_name'} unless # . + qq# exists \$params->{'$key_name'} && defined \$params->{'$key_name'};\n#; return $tolerant_code . $self->$orig(@_); }