Fix a bug that get_method_list() thrown the error for subroutine stubs
gfx [Mon, 6 Sep 2010 04:56:35 +0000 (13:56 +0900)]
lib/Class/MOP/Mixin/HasMethods.pm
t/003_methods.t

index df91a13..ba48dd9 100644 (file)
@@ -165,7 +165,7 @@ sub get_method_list {
     # ref, depending on the Perl version.
     return grep {
                defined $namespace->{$_}
-            && ( ref $namespace->{$_} || *{ $namespace->{$_} }{CODE} )
+            && ( ref(\$namespace->{$_}) ne 'GLOB' || *{ $namespace->{$_} }{CODE} )
             && $self->has_method($_)
         }
         keys %{$namespace};
index 418c9b8..5340b44 100644 (file)
@@ -63,6 +63,9 @@ use Class::MOP::Method;
 
 my $Foo = Class::MOP::Class->initialize('Foo');
 
+is join(' ', sort $Foo->get_method_list),
+    'FOO_CONSTANT baaz bang bar baz blah cake evaled_foo floob pie';
+
 ok( $Foo->has_method('pie'),  '... got the method stub pie' );
 ok( $Foo->has_method('cake'), '... got the constant method stub cake' );