a bug fix and some tweaks
[gitmo/Moose.git] / lib / Moose / Meta / TypeConstraint.pm
index ad5094b..0dd9126 100644 (file)
@@ -65,16 +65,22 @@ sub validate {
         return undef;
     }
     else {
-        if ($self->has_message) {
-            local $_ = $value;
-            return $self->message->($value);
-        }
-        else {
-            return "Validation failed for '" . $self->name . "' failed";
-        }
+        $self->get_message($value);
     }
 }
 
+sub get_message {
+    my ($self, $value) = @_;
+    $value = (defined $value ? overload::StrVal($value) : 'undef');
+    if (my $msg = $self->message) {
+        local $_ = $value;
+        return $msg->($value);
+    }
+    else {
+        return "Validation failed for '" . $self->name . "' failed with value $value";
+    }    
+}
+
 ## type predicates ...
 
 sub is_a_type_of {
@@ -249,6 +255,8 @@ the C<message> will be used to construct a custom error message.
 
 =item B<message>
 
+=item B<get_message ($value)>
+
 =item B<has_coercion>
 
 =item B<coercion>