X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FMethod%2FAccessor.pm;h=631fa325f4a5aa323073b6316f2ea8417f13d6e3;hp=db3903c778de053ce90a7d5bb321a6d56d4a179a;hb=ffbbf459fec594dcd08b5f7d05014740390bde58;hpb=a15d1371334de8874a74618597d0c1995fdca276 diff --git a/lib/Mouse/Meta/Method/Accessor.pm b/lib/Mouse/Meta/Method/Accessor.pm index db3903c..631fa32 100755 --- a/lib/Mouse/Meta/Method/Accessor.pm +++ b/lib/Mouse/Meta/Method/Accessor.pm @@ -15,7 +15,7 @@ sub _install_accessor{ my $should_deref = $attribute->should_auto_deref; my $should_coerce = $attribute->should_coerce; - my $compiled_type_constraint = $constraint ? $constraint->_compiled_type_constraint : undef; + my $compiled_type_constraint = $constraint ? $constraint->_compiled_type_constraint : undef; my $self = '$_[0]'; my $key = sprintf q{"%s"}, quotemeta $name; @@ -41,11 +41,14 @@ sub _install_accessor{ my $value = '$_[1]'; if ($constraint) { + if(!$compiled_type_constraint){ + Carp::confess("[BUG]Missing compiled type constraint for $constraint"); + } if ($should_coerce) { $accessor .= "\n". '#line ' . __LINE__ . ' "' . __FILE__ . "\"\n" . - 'my $val = Mouse::Util::TypeConstraints->typecast_constraints("'.$attribute->associated_class->name.'", $attribute->{type_constraint}, '.$value.');'; + 'my $val = $constraint->coerce('.$value.');'; $value = '$val'; } if ($compiled_type_constraint) {