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) {
my %args = ref $first ? %$first : $first ? ($first, @rest) : ();
$args{name} = $args{name} ? "$args{name}" : "__ANON__";
+ if ( $args{optimized} ) {
+ Moose::Deprecated::deprecated(
+ feature => 'optimized type constraint sub ref',
+ message =>
+ 'Providing an optimized subroutine ref for type constraints is deprecated.'
+ . ' Use the inlining feature (inline_as) instead.'
+ );
+ }
+
+ 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);
}