provide an is_overloaded method
Jesse Luehrs [Thu, 8 Mar 2012 07:09:57 +0000 (01:09 -0600)]
lib/Class/MOP/Mixin/HasMethods.pm
t/metaclasses/overloading.t

index 9ecfd69..f714cd5 100644 (file)
@@ -211,12 +211,17 @@ sub overload_operators {
     return @$overload_operators;
 }
 
+sub is_overloaded {
+    my $self = shift;
+    return overload::Overloaded($self->name);
+}
+
 # XXX this could probably stand to be cached, but i figure it should be
 # uncommon enough to not particularly matter
 sub _overload_map {
     my $self = shift;
 
-    return {} unless overload::Overloaded($self->name);
+    return {} unless $self->is_overloaded;
 
     my %map;
     for my $op ($self->overload_operators) {
index 3621dd9..f2227c8 100644 (file)
@@ -12,6 +12,8 @@ use Test::Fatal;
 {
     my $meta = Foo->meta;
 
+    ok(!$meta->is_overloaded);
+
     is_deeply([sort $meta->overload_operators],
               [sort map { split /\s+/ } values %overload::ops]);
 
@@ -38,6 +40,8 @@ BEGIN { $plus_impl = sub { $plus = 1; "plus" } }
 {
     my $meta = Foo::Overloaded->meta;
 
+    ok($meta->is_overloaded);
+
     ok($meta->has_overloaded_operator('+'));
     ok(!$meta->has_overloaded_operator('-'));