fix a couple of unoptimized constraints
Jesse Luehrs [Thu, 21 Apr 2011 05:40:22 +0000 (00:40 -0500)]
there are still more that need to be fixed i think, but do we really
care about these at all? they're pretty much only useful for
informational purposes, i don't think there's any way to actually
trigger this codepath

lib/Moose/Util/TypeConstraints/Builtins.pm

index 1c623de..0b28d49 100644 (file)
@@ -56,7 +56,7 @@ sub define_builtins {
 
     subtype 'Str'
         => as 'Value'
-        => where { ref(\$_) eq 'SCALAR' }
+        => where { ref(\$_) eq 'SCALAR' || ref(\(my $val = $_)) eq 'SCALAR' }
         => inline_as {
             'defined(' . $_[1] . ') '
               . '&& (ref(\\' . $_[1] . ') eq "SCALAR"'
@@ -73,7 +73,7 @@ sub define_builtins {
 
     subtype 'Int'
         => as 'Num'
-        => where { "$_" =~ /\A-?[0-9]+\z/ }
+        => where { (my $val = $_) =~ /\A-?[0-9]+\z/ }
         => inline_as {
             'defined(' . $_[1] . ') '
               . '&& !ref(' . $_[1] . ') '