obscure warning from Carp::Heavy
Robin Barker [Thu, 3 Jan 2002 15:26:20 +0000 (15:26 +0000)]
Message-Id: <200201031526.PAA06095@tempest.npl.co.uk>

p4raw-id: //depot/perl@14040

lib/Carp.t
lib/Carp/Heavy.pm

index e9dd8cd..2ea98d8 100644 (file)
@@ -5,7 +5,7 @@ BEGIN {
 
 use Carp qw(carp cluck croak confess);
 
-print "1..8\n";
+print "1..9\n";
 
 print "ok 1\n";
 
@@ -56,3 +56,16 @@ my $eval = "use Carp::Heavy; return Carp::caller_info(0);";
 my %info = eval($eval);
 print "not " if ($info{sub_name} ne "eval '$eval'");
 print "ok 8\n";
+
+# test for '...::CARP_NOT used only once' warning from Carp::Heavy
+my $warning;
+eval {
+    BEGIN {
+       $^W = 1;
+       $SIG{__WARN__} =
+           sub { if( defined $^S ){ warn $_[0] } else { $warning = $_[0] } }
+    }
+    package Z; 
+    BEGIN { eval { Carp::croak() } }
+};
+print $warning ? "not ok 9\n#$warning" : "ok 9\n";
index cf10892..c3d3c26 100644 (file)
@@ -237,6 +237,7 @@ sub trusts {
 sub trusts_directly {
     my $class = shift;
     no strict 'refs';
+    no warnings 'once'; 
     return @{"$class\::CARP_NOT"}
       ? @{"$class\::CARP_NOT"}
       : @{"$class\::ISA"};