X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FTypeConstraint%2FClass.pm;h=e4572045e92b2710f8940535cf039fb88f87df46;hb=72276e04fbf19fe6bf5ca7af8ca64465bac8bd32;hp=f43f1217c085cd6c5f2fa99dbbc6f73925d832d8;hpb=be21cc5c8077f4bb88f1682793ab70f35e627e86;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/TypeConstraint/Class.pm b/lib/Moose/Meta/TypeConstraint/Class.pm index f43f121..e457204 100644 --- a/lib/Moose/Meta/TypeConstraint/Class.pm +++ b/lib/Moose/Meta/TypeConstraint/Class.pm @@ -7,7 +7,7 @@ use metaclass; use Scalar::Util 'blessed'; use Moose::Util::TypeConstraints (); -our $VERSION = '0.76'; +our $VERSION = '1.03'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -34,7 +34,7 @@ sub _create_hand_optimized_type_constraint { my $class = $self->class; $self->hand_optimized_type_constraint( sub { - blessed( $_[0] ) && $_[0]->isa($class) + blessed( $_[0] ) && blessed( $_[0] ) ne 'Regexp' && $_[0]->isa($class) } ); } @@ -78,16 +78,17 @@ sub is_a_type_of { sub is_subtype_of { my ($self, $type_or_name_or_class ) = @_; - if ( not ref $type_or_name_or_class ) { - # it might be a class - return 1 if $self->class->isa( $type_or_name_or_class ); - } - my $type = Moose::Util::TypeConstraints::find_type_constraint($type_or_name_or_class); - return unless defined $type; + if ( not defined $type ) { + if ( not ref $type_or_name_or_class ) { + # it might be a class + return 1 if $self->class->isa( $type_or_name_or_class ); + } + return; + } - if ( $type->isa(__PACKAGE__) ) { + if ( $type->isa(__PACKAGE__) && $type->class ne $self->class) { # if $type_or_name_or_class isn't a class, it might be the TC name of another ::Class type # or it could also just be a type object in this branch return $self->class->isa( $type->class ); @@ -179,13 +180,17 @@ as its parent. Note that it does I return a C object! +=item B<< $constraint->get_message($value) >> + +This is the same as L except +that it explicitly says C was checked. This is to help users deal +with accidentally autovivified type constraints. + =back =head1 BUGS -All complex software has bugs lurking in it, and this module is no -exception. If you find a bug please either email me, or add the bug -to cpan-RT. +See L for details on reporting bugs. =head1 AUTHOR @@ -193,7 +198,7 @@ Yuval Kogman Enothingmuch@cpan.orgE =head1 COPYRIGHT AND LICENSE -Copyright 2006-2009 by Infinity Interactive, Inc. +Copyright 2006-2010 by Infinity Interactive, Inc. L