my $namespace = $self->namespace;
- return grep { *{ $namespace->{$_} }{CODE} && $self->has_method($_) }
+ # Constants will show up as some sort of reference in the namespace hash
+ # ref.
+ return grep {
+ ! ref $namespace->{$_}
+ && *{ $namespace->{$_} }{CODE}
+ && $self->has_method($_)
+ }
keys %{$namespace};
}
my $namespace = $self->namespace;
- return map { $self->get_method($_) } grep { *{ $namespace->{$_} }{CODE} }
+ return map { $self->get_method($_) }
+ grep { ! ref $namespace->{$_} && *{ $namespace->{$_} }{CODE} }
keys %{$namespace};
}
}
}
+{
+ package HasConstants;
+
+ use constant FOO => 1;
+ use constant BAR => [];
+ use constant BAZ => {};
+
+ sub quux {1}
+ sub thing {1}
+}
+
+my $HC = Class::MOP::Class->initialize('HasConstants');
+
+is_deeply(
+ [ sort $HC->get_method_list ],
+ [qw( quux thing )],
+ 'get_method_list handles constants properly'
+);
+
+is_deeply(
+ [ sort map { $_->name } $HC->_get_local_methods ],
+ [qw( quux thing )],
+ '_get_local_methods handles constants properly'
+);
+
+
done_testing;