clean some things up, add some more tests
[gitmo/Moose.git] / lib / Class / MOP / Mixin / HasMethods.pm
index dd04fc0..9ecfd69 100644 (file)
@@ -208,6 +208,7 @@ sub _full_method_map {
 my $overload_operators;
 sub overload_operators {
     $overload_operators ||= [map { split /\s+/ } values %overload::ops];
+    return @$overload_operators;
 }
 
 # XXX this could probably stand to be cached, but i figure it should be
@@ -218,7 +219,7 @@ sub _overload_map {
     return {} unless overload::Overloaded($self->name);
 
     my %map;
-    for my $op (@{ $self->overload_operators }) {
+    for my $op ($self->overload_operators) {
         my $body = overload::Method($self->name, $op);
         next unless defined $body;
         $map{$op} = $body;
@@ -241,21 +242,21 @@ sub get_overloaded_operators {
 sub has_overloaded_operator {
     my $self = shift;
     my ($op) = @_;
-    return defined overload::Method($op);
+    return defined overload::Method($self->name, $op);
 }
 
 sub get_overloaded_operator {
     my $self = shift;
     my ($op) = @_;
-    my $body = overload::Method($op);
+    my $body = overload::Method($self->name, $op);
     return unless defined $body;
     return $self->_wrap_overload($op, $body);
 }
 
-sub add_overload {
+sub add_overloaded_operator {
     my $self = shift;
     my ($op, $body) = @_;
-    overload->import($op => $body);
+    $self->name->overload::OVERLOAD($op => $body);
 }
 
 sub _wrap_overload {