X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FModule.pm;h=0545f362aa12e25b437cf0f4c477dfc4e937d76d;hp=ac15fcc71441a040bccbe648abd844274f171b91;hb=134daa672a270f9144185a6d245085558fceb210;hpb=1b9e472d8c7e704eced9b2ea83194f83f0265018 diff --git a/lib/Mouse/Meta/Module.pm b/lib/Mouse/Meta/Module.pm index ac15fcc..0545f36 100755 --- a/lib/Mouse/Meta/Module.pm +++ b/lib/Mouse/Meta/Module.pm @@ -5,7 +5,7 @@ use warnings; use Carp (); use Scalar::Util qw/blessed weaken/; -use Mouse::Util qw/get_code_info not_supported load_class/; +use Mouse::Util qw/:meta get_code_info not_supported load_class/; { my %METACLASS_CACHE; @@ -46,8 +46,6 @@ use Mouse::Util qw/get_code_info not_supported load_class/; } -sub meta{ Mouse::Meta::Class->initialize(ref $_[0] || $_[0]) } - sub _new{ Carp::croak("Mouse::Meta::Module is an abstract class") } sub name { $_[0]->{package} } @@ -104,7 +102,7 @@ sub _code_is_mine { # taken from Class::MOP::Class my ( $code_package, $code_name ) = get_code_info($code); - return $code_package && $code_package eq $self->name + return $code_package && $code_package eq $self->{package} || ( $code_package eq 'constant' && $code_name eq '__ANON__' ); } @@ -112,7 +110,8 @@ sub has_method { my($self, $method_name) = @_; return 1 if $self->{methods}->{$method_name}; - my $code = $self->name->can($method_name); + + my $code = $self->{package}->can($method_name); return $code && $self->_code_is_mine($code); } @@ -301,6 +300,11 @@ __END__ =head1 NAME -Mouse::Meta::Module - Common base class for Mouse::Meta::Class and Mouse::Meta::Role +Mouse::Meta::Module - The base class for Mouse::Meta::Class and Mouse::Meta::Role + +=head1 SEE ALSO + +L =cut +