X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FClass.pm;h=6abc7b2740fb2d33e821624a3400ef31d297c1f0;hp=b5adde838c6b897805364c8ba77035b53b8587ff;hb=8215d7254eb706c929b0cfa9efafb7a5e6db658b;hpb=ffbbf459fec594dcd08b5f7d05014740390bde58 diff --git a/lib/Mouse/Meta/Class.pm b/lib/Mouse/Meta/Class.pm index b5adde8..6abc7b2 100644 --- a/lib/Mouse/Meta/Class.pm +++ b/lib/Mouse/Meta/Class.pm @@ -185,17 +185,12 @@ sub _initialize_instance{ unless ($attribute->is_lazy) { my $default = $attribute->default; my $builder = $attribute->builder; - my $value = $attribute->has_builder - ? $instance->$builder - : ref($default) eq 'CODE' - ? $default->($instance) - : $default; + my $value = $builder ? $instance->$builder() + : ref($default) eq 'CODE' ? $instance->$default() + : $default; - $value = $attribute->coerce_constraint($value) - if $attribute->should_coerce; - $attribute->verify_against_type_constraint($value); - - $instance->{$key} = $value; + # XXX: we cannot use $attribute->set_value() because it invokes triggers. + $instance->{$key} = $attribute->_coerce_and_verify($value, $instance);; weaken($instance->{$key}) if ref($instance->{$key}) && $attribute->is_weak_ref;