This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
use re qw(debug foo) should warn
authorKarl Williamson <khw@cpan.org>
Fri, 6 Mar 2020 00:25:26 +0000 (17:25 -0700)
committerKarl Williamson <khw@cpan.org>
Wed, 11 Mar 2020 22:09:43 +0000 (16:09 -0600)
Instead, foo was silently ignored

ext/re/re.pm
ext/re/t/re.t

index 0454c41..98999a0 100644 (file)
@@ -122,6 +122,7 @@ sub bits {
     my $bits = 0;
     my $turning_all_off = ! @_ && ! $on;
     my $seen_Debug = 0;
+    my $seen_debug = 0;
     if ($turning_all_off) {
 
         # Pretend were called with certain parameters, which are best dealt
@@ -166,7 +167,7 @@ sub bits {
             ${^RE_DEBUG_FLAGS} = $flags{'EXECUTE'} | $flags{'DUMP'};
            setcolor() if $s =~/color/i;
            _load_unload($on);
-           last;
+            $seen_debug = 1;
         } elsif (exists $bitmask{$s}) {
            $bits |= $bitmask{$s};
        } elsif ($EXPORT_OK{$s}) {
@@ -275,9 +276,15 @@ sub bits {
                            : ($^H &= ~$flags_hint);
        } else {
            require Carp;
-           Carp::carp("Unknown \"re\" subpragma '$s' (known ones are: ",
+            if ($seen_debug && defined $flags{$s}) {
+                Carp::carp("Use \"Debug\" not \"debug\", to list debug types"
+                         . " in \"re\".  \"$s\" ignored");
+            }
+            else {
+                Carp::carp("Unknown \"re\" subpragma '$s' (known ones are: ",
                        join(', ', map {qq('$_')} 'debug', 'debugcolor', sort keys %bitmask),
                        ")");
+            }
        }
     }
 
index 353ff81..ff5cf9f 100644 (file)
@@ -13,7 +13,7 @@ use strict;
 my $re_taint_bit = 0x00100000;
 my $re_eval_bit = 0x00200000;
 
-use Test::More tests => 15;
+use Test::More tests => 16;
 require_ok( 're' );
 
 # setcolor
@@ -48,6 +48,10 @@ like( $warn, qr/Unknown "re" subpragma/,
 ok( re::bits(0, 'taint') & $re_taint_bit, '... should set taint bits' );
 ok( re::bits(0, 'eval')  & $re_eval_bit, '... should set eval bits' );
 
+undef $warn;
+eval "use re qw(debug ALL)";
+like( $warn, qr/"Debug" not "debug"/, 'debug with debugging type should warn');
+
 local $^H;
 
 # import