use Scalar::Util 'blessed';
use Moose::Util::TypeConstraints ();
-our $VERSION = '0.96';
+our $VERSION = '1.03';
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
my $class = $self->class;
$self->hand_optimized_type_constraint(
sub {
- blessed( $_[0] ) && $_[0]->isa($class)
+ blessed( $_[0] ) && blessed( $_[0] ) ne 'Regexp' && $_[0]->isa($class)
}
);
}
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 );