Move accessors into XS
[gitmo/Mouse.git] / lib / Mouse / Meta / TypeConstraint.pm
index 9ba41fe..d783a73 100644 (file)
@@ -18,13 +18,10 @@ 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){
@@ -89,13 +86,6 @@ sub create_child_type{
    );
 }
 
-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) = @_;
@@ -104,11 +94,11 @@ sub compile_type_constraint{
     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};
         }
     }
 
@@ -250,6 +240,10 @@ __END__
 
 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