Revert "make re-applying a role to an object instance a no-op."
Dave Rolsky [Sat, 14 Mar 2009 18:12:38 +0000 (13:12 -0500)]
The fix is to just check for this oneself:

 Role->meta->apply($obj) unless $obj->meta->does_role('Role');

This reverts commit bfe4136962533b04367ff4f5f3c483536c31231d.

Changes
lib/Moose/Meta/Role/Application/ToInstance.pm
t/030_roles/010_run_time_role_composition.t

diff --git a/Changes b/Changes
index dd15858..2493181 100644 (file)
--- a/Changes
+++ b/Changes
@@ -26,12 +26,6 @@ Revision history for Perl extension Moose
       - Allow a subclass to set lazy_build for an inherited
         attribute. (Dieter Pearcey).
 
-    * Moose::Meta::Role::Application::ToInstance
-      - Attempting to apply the same role to an object repeatedly is
-        now a no-op after the first application. Previously, doing
-        this to an object instance eventually caused recursion
-        warnings from Perl. Reported by Curtis Poe. RT #43904.
-
 0.72 Mon, February 23, 2009
     * Moose::Object
     * Moose::Meta::Method::Constructor
index 7e5b4d6..411708d 100644 (file)
@@ -22,11 +22,6 @@ my %ANON_CLASSES;
 sub apply {
     my ($self, $role, $object) = @_;
 
-    return
-        if $object->can('meta')
-            && $object->meta->can('does_role')
-            && $object->meta->does_role( $role->name );
-
     my $anon_role_key = (blessed($object) . $role->name);
 
     my $class;
index 5005dcd..1a86a18 100644 (file)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 28;
+use Test::More tests => 27;
 
 use Scalar::Util qw(blessed);
 
@@ -101,21 +101,6 @@ isa_ok($obj2, 'My::Class');
     is(blessed($obj), blessed($obj2), '... they share the same anon-class/role thing again');
 }
 
-SKIP:
-{
-    eval 'use Test::Output;';
-    skip 'This test requires Test::Output', 1
-        if $@;
-
-    my $obj = My::Class->new;
-
-    stderr_is(
-        sub {
-            for ( 1 .. 200 ) {
-                Sleeper->meta->apply($obj);
-            }
-        },
-        q{},
-        'No warnings when re-applying a role to an object 200 times'
-    );
-}
+
+
+