Mouse::Util::blessed
Shawn M Moore [Sun, 28 Sep 2008 03:43:06 +0000 (03:43 +0000)]
lib/Mouse/Meta/Attribute.pm
lib/Mouse/Meta/Class.pm
lib/Mouse/Role.pm
lib/Mouse/TypeRegistry.pm
lib/Mouse/Util.pm

index 368e10d..959f712 100644 (file)
@@ -4,7 +4,8 @@ use strict;
 use warnings;
 
 use Carp 'confess';
-use Scalar::Util qw/blessed weaken/;
+use Mouse::Util 'blessed';
+use Scalar::Util 'weaken';
 
 sub new {
     my $class = shift;
index ee7d5dc..73264d1 100644 (file)
@@ -3,8 +3,7 @@ package Mouse::Meta::Class;
 use strict;
 use warnings;
 
-use Mouse::Util 'get_linear_isa';
-use Scalar::Util 'blessed';
+use Mouse::Util qw/get_linear_isa blessed/;
 use Carp 'confess';
 
 use Class::Method::Modifiers ();
index cf47b5b..2f44a75 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 use base 'Exporter';
 
 use Carp 'confess';
-use Scalar::Util 'blessed';
+use Mouse::Util 'blessed';
 
 use Mouse::Meta::Role;
 
index 757ed85..a8992c2 100644 (file)
@@ -3,7 +3,8 @@ package Mouse::TypeRegistry;
 use strict;
 use warnings;
 
-use Scalar::Util qw/looks_like_number blessed openhandle/;
+use Mouse::Util 'blessed';
+use Scalar::Util qw/looks_like_number openhandle/;
 
 no warnings 'uninitialized';
 sub optimized_constraints {
index cc78ccf..c8b3c67 100644 (file)
@@ -5,6 +5,32 @@ use warnings;
 use base 'Exporter';
 
 our %dependencies = (
+    'Scalar::Util' => {
+        'blessed' => do {
+            do {
+                no strict 'refs';
+                *UNIVERSAL::a_sub_not_likely_to_be_here = sub {
+                    my $ref = ref($_[0]);
+
+                    # deviation from Scalar::Util
+                    # XS returns undef, PP returns GLOB.
+                    # let's make that more consistent by having PP return
+                    # undef if it's a GLOB. :/
+
+                    # \*STDOUT would be allowed as an object in PP blessed
+                    # but not XS
+                    return $ref eq 'GLOB' ? undef : $ref;
+                };
+            };
+
+            sub {
+                local($@, $SIG{__DIE__}, $SIG{__WARN__});
+                length(ref($_[0]))
+                    ? eval { $_[0]->a_sub_not_likely_to_be_here }
+                    : undef;
+            },
+        },
+    },
     'MRO::Compat' => {
         'get_linear_isa' => {
             loaded     => \&mro::get_linear_isa,