dial back warnings on UNIVERSAL->import
Ricardo Signes [Tue, 29 Dec 2009 13:16:24 +0000 (08:16 -0500)]
still warn on UNIVERSAL->import(@args)
do not warn on UNIVERSAL->import; this means "use UNIVERSAL;" is
still accepted without warning (for better or worse)

lib/UNIVERSAL.pm
t/op/universal.t

index 5e3c8c8..64224e5 100644 (file)
@@ -15,6 +15,7 @@ require Exporter;
 # anything unless called on UNIVERSAL.
 sub import {
     return unless $_[0] eq __PACKAGE__;
+    return unless @_ > 1;
     require warnings;
     warnings::warnif(
       'deprecated',
index a24d7aa..d74686f 100644 (file)
@@ -10,7 +10,7 @@ BEGIN {
     require "./test.pl";
 }
 
-plan tests => 123;
+plan tests => 124;
 
 $a = {};
 bless $a, "Bob";
@@ -249,9 +249,14 @@ use warnings "deprecated";
 {
     my $m;
     local $SIG{__WARN__} = sub { $m = $_[0] };
-    eval "use UNIVERSAL";
+    eval "use UNIVERSAL 'can'";
     like($m, qr/^UNIVERSAL->import is deprecated/,
-       "deprecation warning for UNIVERSAL->import");
+       "deprecation warning for UNIVERSAL->import('can')");
+
+         undef $m;
+    eval "use UNIVERSAL";
+    is($m, undef,
+       "no deprecation warning for UNIVERSAL->import");
 }
 
 # Test: [perl #66112]: change @ISA inside  sub isa