package Mouse::Meta::TypeConstraint;
-use strict;
-use warnings;
+use Mouse::Util qw(:meta); # enables strict and warnings
use overload
'""' => sub { shift->{name} }, # stringify to tc name
use Carp qw(confess);
use Scalar::Util qw(blessed reftype);
-use Mouse::Util qw(:meta);
-
my $null_check = sub { 1 };
sub new {
my $check = delete $args{optimized};
if($args{_compiled_type_constraint}){
- Carp::cluck("'_compiled_type_constraint' has been deprecated, use 'optimized' instead");
- $check = $args{_compiled_type_constraint};
+ Carp::cluck("'_compiled_type_constraint' has been deprecated, use 'optimized' instead")
+ if _MOUSE_VERBOSE;
- if(blessed($check)){
- Carp::cluck("Constraint must be a CODE reference");
- $check = $check->{compiled_type_constraint};
- }
+ $check = $args{_compiled_type_constraint};
}
if($check){
);
}
-sub name { $_[0]->{name} }
-sub parent { $_[0]->{parent} }
-sub message { $_[0]->{message} }
-
-sub _compiled_type_constraint{ $_[0]->{compiled_type_constraint} }
-
-sub has_coercion{ exists $_[0]->{_compiled_type_coercion} }
sub compile_type_constraint{
my($self) = @_;
my @checks;
for(my $parent = $self->parent; defined $parent; $parent = $parent->parent){
if($parent->{hand_optimized_type_constraint}){
- push @checks, $parent->{hand_optimized_type_constraint};
+ unshift @checks, $parent->{hand_optimized_type_constraint};
last; # a hand optimized constraint must include all the parents
}
elsif($parent->{constraint}){
- push @checks, $parent->{constraint};
+ unshift @checks, $parent->{constraint};
}
}
Mouse::Meta::TypeConstraint - The Mouse Type Constraint metaclass
+=head1 VERSION
+
+This document describes Mouse version 0.40
+
=head1 DESCRIPTION
For the most part, the only time you will ever encounter an