From: Jesse Luehrs Date: Thu, 23 Sep 2010 08:14:43 +0000 (-0500) Subject: move this back to HasMethods, since moose roles will need it too X-Git-Tag: 1.09~14 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=f1af2436a0bc78cca31deb547233ef30983a2663;p=gitmo%2FClass-MOP.git move this back to HasMethods, since moose roles will need it too --- diff --git a/lib/Class/MOP/Class.pm b/lib/Class/MOP/Class.pm index 1afc676..96ecf9d 100644 --- a/lib/Class/MOP/Class.pm +++ b/lib/Class/MOP/Class.pm @@ -8,7 +8,6 @@ use Class::MOP::Instance; use Class::MOP::Method::Wrapped; use Class::MOP::Method::Accessor; use Class::MOP::Method::Constructor; -use Class::MOP::Method::Meta; use Class::MOP::MiniTrait; use Carp 'confess'; @@ -125,22 +124,6 @@ sub _real_ref_name { : ref $self; } -sub _meta_method_class { 'Class::MOP::Method::Meta' } - -sub _add_meta_method { - my $self = shift; - my $existing_method = $self->find_method_by_name('meta'); - return if $existing_method - && $existing_method->isa($self->_meta_method_class); - $self->add_method( - 'meta' => $self->_meta_method_class->wrap( - name => 'meta', - package_name => $self->name, - associated_metaclass => $self, - ) - ); -} - sub _new { my $class = shift; diff --git a/lib/Class/MOP/Mixin/HasMethods.pm b/lib/Class/MOP/Mixin/HasMethods.pm index d496ddf..f3d5a4d 100644 --- a/lib/Class/MOP/Mixin/HasMethods.pm +++ b/lib/Class/MOP/Mixin/HasMethods.pm @@ -3,6 +3,8 @@ package Class::MOP::Mixin::HasMethods; use strict; use warnings; +use Class::MOP::Method::Meta; + our $VERSION = '1.09'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -15,6 +17,23 @@ use base 'Class::MOP::Mixin'; sub method_metaclass { $_[0]->{'method_metaclass'} } sub wrapped_method_metaclass { $_[0]->{'wrapped_method_metaclass'} } +sub _meta_method_class { 'Class::MOP::Method::Meta' } + +sub _add_meta_method { + my $self = shift; + my $existing_method = $self->can('find_method_by_name') + ? $self->find_method_by_name('meta') + : $self->get_method('meta'); + return if $existing_method + && $existing_method->isa($self->_meta_method_class); + $self->add_method( + 'meta' => $self->_meta_method_class->wrap( + name => 'meta', + package_name => $self->name, + associated_metaclass => $self, + ) + ); +} # This doesn't always get initialized in a constructor because there is a # weird object construction path for subclasses of Class::MOP::Class. At one diff --git a/t/010_self_introspection.t b/t/010_self_introspection.t index dbf5c4e..7c0a962 100644 --- a/t/010_self_introspection.t +++ b/t/010_self_introspection.t @@ -93,7 +93,6 @@ my @class_mop_class_methods = qw( find_method_by_name find_all_methods_by_name find_next_method_by_name add_before_method_modifier add_after_method_modifier add_around_method_modifier - _add_meta_method _meta_method_class _attach_attribute _post_add_attribute