use Devel::PartialDump to dump tc failures, if possible
[gitmo/Moose.git] / lib / Moose / Meta / TypeConstraint.pm
index b4cfec5..f85cffb 100644 (file)
@@ -12,11 +12,10 @@ use overload '0+'     => sub { refaddr(shift) }, # id an object
 
 use Scalar::Util qw(blessed refaddr);
 use Sub::Name qw(subname);
+use Try::Tiny;
 
 use base qw(Class::MOP::Object);
 
-our $AUTHORITY = 'cpan:STEVAN';
-
 __PACKAGE__->meta->add_attribute('name'       => (reader => 'name'));
 __PACKAGE__->meta->add_attribute('parent'     => (
     reader    => 'parent',
@@ -140,7 +139,13 @@ sub get_message {
         return $msg->($value);
     }
     else {
-        $value = (defined $value ? overload::StrVal($value) : 'undef');
+        # have to load it late like this, since it uses Moose itself
+        if (try { Class::MOP::load_class('Devel::PartialDump'); 1 }) {
+            $value = Devel::PartialDump->new->dump($value);
+        }
+        else {
+            $value = (defined $value ? overload::StrVal($value) : 'undef');
+        }
         return "Validation failed for '" . $self->name . "' with value $value";
     }
 }