From: Graham Knop Date: Thu, 11 Jul 2013 00:39:16 +0000 (-0400) Subject: only call apply_single_role_to_package for backcompat if it is really needed X-Git-Tag: v1.003000~15 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=2ff0bab0bca35f0deac442f982485ff0e10ce4d3;p=gitmo%2FRole-Tiny.git only call apply_single_role_to_package for backcompat if it is really needed --- diff --git a/lib/Role/Tiny.pm b/lib/Role/Tiny.pm index 4de4f33..f0f5d76 100644 --- a/lib/Role/Tiny.pm +++ b/lib/Role/Tiny.pm @@ -201,11 +201,15 @@ sub apply_roles_to_package { $me->$step($to, $role); } } - # backcompat: allow subclasses to use apply_single_role_to_package - # to apply changes. set a local var so ours does nothing. - local our $SKIP_APPLY = 1; - foreach my $role (@roles) { - $me->apply_single_role_to_package($to, $role); + if ($me ne __PACKAGE__ + and $me->can('apply_single_role_to_package') + != \&apply_single_role_to_package) { + # backcompat: allow subclasses to use apply_single_role_to_package + # to apply changes. set a local var so ours does nothing. + local our $SKIP_APPLY = 1; + foreach my $role (@roles) { + $me->apply_single_role_to_package($to, $role); + } } $APPLIED_TO{$to}{join('|',@roles)} = 1; }