X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FClass.pm;h=134189d9cf05690d517530fb6b0c8d17fdc21148;hb=25f83ae1ee4aeed4ada879ffbd31a25b269efda8;hp=b5adde838c6b897805364c8ba77035b53b8587ff;hpb=ffbbf459fec594dcd08b5f7d05014740390bde58;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Class.pm b/lib/Mouse/Meta/Class.pm index b5adde8..134189d 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; @@ -414,7 +409,7 @@ sub does_role { || $self->throw_error("You must supply a role name to look for"); for my $class ($self->linearized_isa) { - my $meta = Mouse::Meta::Module::class_of($class); + my $meta = Mouse::Meta::Module::get_metaclass_by_name($class); next unless $meta && $meta->can('roles'); for my $role (@{ $meta->roles }) {