apply patch from ash on #moose
Chris Prather [Wed, 1 Jul 2009 14:32:47 +0000 (10:32 -0400)]
Changes
lib/Class/MOP/Method.pm
t/030_method.t

diff --git a/Changes b/Changes
index 1252e51..ab8dca5 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 Revision history for Perl extension Class-MOP.
 
+    * Class::MOP::Method
+      - Fix bug from MooseX::Types passing blessed code references
+
 0.89
     * Class::MOP::Instance
       - add inline version of rebless_instance_structure. (doy)
index f2c8972..9907bd7 100644 (file)
@@ -5,7 +5,7 @@ use strict;
 use warnings;
 
 use Carp         'confess';
-use Scalar::Util 'weaken';
+use Scalar::Util 'weaken', 'reftype';
 
 our $VERSION   = '0.88';
 $VERSION = eval $VERSION;
@@ -28,7 +28,7 @@ sub wrap {
     my %params = @args;
     my $code = $params{body};
 
-    ('CODE' eq ref($code))
+    (ref $code && 'CODE' eq reftype($code))
         || confess "You must supply a CODE reference to bless, not (" . ($code || 'undef') . ")";
 
     ($params{package_name} && $params{name})
index 4987909..b968deb 100644 (file)
@@ -1,7 +1,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 46;
+use Test::More tests => 47;
 use Test::Exception;
 
 use Class::MOP;
@@ -70,6 +70,10 @@ dies_ok {
     Class::MOP::Method->wrap(sub { 'FAIL' }, name => '__ANON__')
 } '... bad args for &wrap';
 
+lives_ok {
+    Class::MOP::Method->wrap(bless(sub { 'FAIL' }, "Foo"), name => '__ANON__', package_name => 'Foo::Bar')
+} '... blessed coderef to &wrap';
+
 my $clone = $method->clone(
     package_name => 'NewPackage',
     name         => 'new_name',