bool => sub { 1 },
fallback => 1;
+use Carp qw(confess);
+use Class::Load qw(load_class);
use Eval::Closure;
use Scalar::Util qw(blessed refaddr);
use Sub::Name qw(subname);
# have to load it late like this, since it uses Moose itself
my $can_partialdump = try {
# versions prior to 0.14 had a potential infinite loop bug
- Class::MOP::load_class('Devel::PartialDump', { -version => 0.14 });
+ load_class('Devel::PartialDump', { -version => 0.14 });
1;
};
if ($can_partialdump) {
));
sub parents {
- my $self;
+ my $self = shift;
$self->parent;
}
);
}
+ if ( exists $args{message}
+ && (!ref($args{message}) || ref($args{message}) ne 'CODE') ) {
+ confess("The 'message' parameter must be a coderef");
+ }
+
my $self = $class->_new(%args);
$self->compile_type_constraint()
unless $self->_has_compiled_type_constraint;
sub get_message {
my ($self, $value) = @_;
- my $msg = $self->message || $self->_default_message;
+ my $msg = $self->has_message
+ ? $self->message
+ : $self->_default_message;
local $_ = $value;
return $msg->($value);
}
=item B<< $constraint->parents >>
-A synonym for C<parent>. This is useful for polymorphism with types
-that can have more than one parent.
+Returns all of the types parents as an list of type constraint objects.
=item B<< $constraint->constraint >>