Implement compile_type_constraint in XS
[gitmo/Mouse.git] / lib / Mouse / Meta / TypeConstraint.pm
index 2e97406..155c48c 100644 (file)
@@ -17,8 +17,6 @@ use overload
 
 use Carp         ();
 
-my $null_check = sub { 1 };
-
 sub new {
     my($class, %args) = @_;
 
@@ -90,53 +88,6 @@ sub create_child_type{
    );
 }
 
-
-sub compile_type_constraint{
-    my($self) = @_;
-
-    # add parents first
-    my @checks;
-    for(my $parent = $self->{parent}; defined $parent; $parent = $parent->{parent}){
-         if($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}){
-            unshift @checks, $parent->{constraint};
-        }
-    }
-
-    # then add child
-    if($self->{constraint}){
-        push @checks, $self->{constraint};
-    }
-
-    if($self->{type_constraints}){ # Union
-        my @types = map{ $_->{compiled_type_constraint} } @{ $self->{type_constraints} };
-        push @checks, sub{
-            foreach my $c(@types){
-                return 1 if $c->($_[0]);
-            }
-            return 0;
-        };
-    }
-
-    if(@checks == 0){
-        $self->{compiled_type_constraint} = $null_check;
-    }
-    else{
-        $self->{compiled_type_constraint} =  sub{
-            my(@args) = @_;
-            local $_ = $args[0];
-            foreach my $c(@checks){
-                return undef if !$c->(@args);
-            }
-            return 1;
-        };
-    }
-    return;
-}
-
 sub _add_type_coercions{
     my $self = shift;