X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMethod%2FGenerate%2FConstructor.pm;h=9dae34b53fc93da70a3b657b5b984274373befd6;hb=64284a1b21ce94c351f555f0e74929e4ff8ad323;hp=d24a457e08c74a9de34b3a11265154328d2b80d3;hpb=02e9ef74cf0e746aad5bed3684661622017dad87;p=gitmo%2FMoo.git diff --git a/lib/Method/Generate/Constructor.pm b/lib/Method/Generate/Constructor.pm index d24a457..9dae34b 100644 --- a/lib/Method/Generate/Constructor.pm +++ b/lib/Method/Generate/Constructor.pm @@ -11,7 +11,7 @@ sub register_attribute_specs { my $specs = $self->{attribute_specs}||={}; while (my ($name, $new_spec) = splice @new_specs, 0, 2) { $new_spec->{index} = scalar keys %$specs - unless exists $new_spec->{index}; + unless defined $new_spec->{index}; $specs->{$name} = $new_spec; } $self; @@ -146,7 +146,7 @@ sub _assign_new { join '', ( @init ? ' '.$self->_cap_call($ag->generate_multi_set( - '$new', [ @slots ], '@{$args}{qw('.join(' ',@init).')}' + '$new', [ @slots ], '@{$args}{qw('.join(' ',@init).')}', $spec )).";\n" : '' ), map { @@ -205,7 +205,7 @@ sub _fire_triggers { my ($init, $trigger) = @{$spec->{$name}}{qw(init_arg trigger)}; next unless $init && $trigger; my ($code, $add_captures) = $acc->generate_trigger( - $name, '$new', $acc->generate_simple_get('$new', $name), $trigger + $name, '$new', $acc->generate_simple_get('$new', $name, $spec), $trigger ); @{$captures}{keys %$add_captures} = values %$add_captures; $fire .= " ${code} if exists \$args->{${\perlstring $init}};\n";