Make ‘no overload’ also warn about invalid args
authorFather Chrysostomos <sprout@cpan.org>
Sat, 19 May 2012 00:00:49 +0000 (17:00 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Tue, 22 May 2012 01:09:30 +0000 (18:09 -0700)
lib/overload.pm
lib/overload.t

index 109b7c5..71aeb75 100644 (file)
@@ -63,6 +63,8 @@ sub unimport {
   $package = (caller())[0];
   shift;
   for (@_) {
+      warnings::warnif("overload arg '$_' is invalid")
+        unless $ops_seen{$_};
       delete $ {$package . "::"}{"(" . $_};
   }
 }
index a622cf7..390ffab 100644 (file)
@@ -48,7 +48,7 @@ package main;
 
 $| = 1;
 BEGIN { require './test.pl' }
-plan tests => 5050;
+plan tests => 5051;
 
 use Scalar::Util qw(tainted);
 
@@ -962,11 +962,16 @@ unless ($aaa) {
     my $a = "" ;
     local $SIG{__WARN__} = sub {$a = $_[0]} ;
     $x = eval ' use overload "~|_|~" => sub{} ' ;
+    eval ' no overload "~|_|~" ' ;
     is($a, "");
     use warnings 'overload' ;
     $x = eval ' use overload "~|_|~" => sub{} ' ;
     like($a, qr/^overload arg '~\|_\|~' is invalid at \(eval \d+\) line /,
        'invalid arg warning');
+    undef $a;
+    eval ' no overload "~|_|~" ' ;
+    like($a, qr/^overload arg '~\|_\|~' is invalid at \(eval \d+\) line /,
+       'invalid arg warning');
 }
 
 {