Seems reasonable to me.
Jesse? Dave?
- Stevan
On Dec 31, 2010, at 11:18 AM, David Leadbeater wrote:
With pluggable regexp engines a Regexp is actually a subclass of
Regexp, not Regexp itself.
(Another way to do this would be to use Scalar::Util::reftype and
check for REGEXP; however this only works since regexps became
a first class type in perl 5.12.)
I've not been able to run the tests, lots seem to be failing for me,
even before this change.
---
lib/Moose/Util/TypeConstraints.pm | 2 +-
.../Util/TypeConstraints/OptimizedConstraints.pm | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lib/Moose/Util/TypeConstraints.pm b/lib/Moose/Util/
TypeConstraints.pm
index 1f66409..a7e3e12 100644
--- a/lib/Moose/Util/TypeConstraints.pm
+++ b/lib/Moose/Util/TypeConstraints.pm
@@ -731,7 +731,7 @@ subtype 'Int' => as 'Num' => where { "$_" =~ /^-?
[0-9]+$/ } =>
subtype 'CodeRef' => as 'Ref' => where { ref($_) eq 'CODE' } =>
optimize_as
\&Moose::Util::TypeConstraints::OptimizedConstraints::CodeRef;
-subtype 'RegexpRef' => as 'Ref' => where { ref($_) eq 'Regexp' } =>
+subtype 'RegexpRef' => as 'Ref' => where { blessed($_) && $_-
>isa('Regexp') } =>
optimize_as
\&Moose::Util::TypeConstraints::OptimizedConstraints::RegexpRef;
subtype 'GlobRef' => as 'Ref' => where { ref($_) eq 'GLOB' } =>
diff --git a/lib/Moose/Util/TypeConstraints/OptimizedConstraints.pm
b/lib/Moose/Util/TypeConstraints/OptimizedConstraints.pm
index 5d54359..d1ba155 100644
--- a/lib/Moose/Util/TypeConstraints/OptimizedConstraints.pm
+++ b/lib/Moose/Util/TypeConstraints/OptimizedConstraints.pm
@@ -36,7 +36,7 @@ sub ScalarRef { ref($_[0]) eq 'SCALAR' ||
ref($_[0]) eq 'REF' }
sub ArrayRef { ref($_[0]) eq 'ARRAY' }
sub HashRef { ref($_[0]) eq 'HASH' }
sub CodeRef { ref($_[0]) eq 'CODE' }
-sub RegexpRef { ref($_[0]) eq 'Regexp' }
+sub RegexpRef { blessed($_[0]) && $_[0]->isa('Regexp') }
sub GlobRef { ref($_[0]) eq 'GLOB' }
sub FileHandle { ref($_[0]) eq 'GLOB' &&
Scalar::Util::openhandle($_[0]) or blessed($_[0]) && $_[0]-
>isa("IO::Handle") }
--
1.7.3.3