bool => sub { 1 },
fallback => 1;
+use Carp qw(confess);
use Eval::Closure;
use Scalar::Util qw(blessed refaddr);
use Sub::Name qw(subname);
my %args = ref $first ? %$first : $first ? ($first, @rest) : ();
$args{name} = $args{name} ? "$args{name}" : "__ANON__";
+ 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);
}