X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FUtil%2FTypeConstraints.pm;h=4379903afb7fbb466357e8b07cb59e4145270315;hp=b3665bacd972d3380c99d7cc28d1df51ee7c3542;hb=78b138270e9ef4dd99b8db615e58fcfd2500f58d;hpb=321e52711b176f403d05e39cea83cad9ca4ea154 diff --git a/lib/Mouse/Util/TypeConstraints.pm b/lib/Mouse/Util/TypeConstraints.pm index b3665ba..4379903 100644 --- a/lib/Mouse/Util/TypeConstraints.pm +++ b/lib/Mouse/Util/TypeConstraints.pm @@ -62,6 +62,9 @@ BEGIN { Object => sub { blessed($_[0]) && blessed($_[0]) ne 'Regexp' }, ); + foreach my $code (values %TYPE) { + bless $code, 'Mouse::Meta::TypeConstraint'; + } sub optimized_constraints { \%TYPE } my @TYPE_KEYS = keys %TYPE; @@ -267,10 +270,10 @@ sub _build_type_constraint { "}" ; $code = eval $code_str or Carp::confess($@); - $TYPE{$spec} = $code; + $TYPE{$spec} = bless $code, 'Mouse::Meta::TypeConstraint'; } } - return $code; + return bless $code, 'Mouse::Meta::TypeConstraint'; } sub find_type_constraint { @@ -292,17 +295,25 @@ sub find_or_create_isa_type_constraint { my @code_list = map { $TYPE{$_} || _build_type_constraint($_) } @type_constraints; - $code = sub { + $code = bless sub { my $i = 0; for my $code (@code_list) { return 1 if $code->($_[0]); } return 0; - }; + }, 'Mouse::Meta::TypeConstraint'; } return $code; } +package # Hide from pause + Mouse::Meta::TypeConstraint; + +sub check { + $_[0]->($_[1]) +} + + 1; __END__