Include type name in error when coerce => 1 is given for a type without a coercion
Dave Rolsky [Thu, 8 Jul 2010 23:31:31 +0000 (18:31 -0500)]
lib/Moose/Meta/Attribute.pm
t/020_attributes/034_bad_coerce.t

index f82b863..dfdfbbe 100644 (file)
@@ -323,8 +323,10 @@ sub _process_options {
         $class->throw_error("You cannot have a weak reference to a coerced value on attribute ($name)", data => $options)
             if $options->{weak_ref};
 
-        $options->{type_constraint}->has_coercion
-            || $class->throw_error("You cannot coerce an attribute ($name) unless its type has a coercion", data => $options);
+        unless ( $options->{type_constraint}->has_coercion ) {
+            my $type = $options->{type_constraint}->name;
+            $class->throw_error("You cannot coerce an attribute ($name) unless its type ($type) has a coercion", data => $options);
+        }
     }
 
     if (exists $options->{trigger}) {
index 10d234b..da987ab 100644 (file)
@@ -16,7 +16,7 @@ use Test::Exception;
             isa    => 'Str',
             coerce => 1,
         );
-        } qr/\QYou cannot coerce an attribute (foo) unless its type has a coercion/,
+        } qr/\QYou cannot coerce an attribute (foo) unless its type (Str) has a coercion/,
         'Cannot coerce unless the type has a coercion';
 }