diff options
-rw-r--r-- | mg.c | 13 | ||||
-rw-r--r-- | t/io/binmode.t | 2 | ||||
-rw-r--r-- | t/lib/warnings/2use | 6 |
3 files changed, 16 insertions, 5 deletions
@@ -785,11 +785,16 @@ Perl_magic_get(pTHX_ SV *sv, MAGIC *mg) if (*(mg->mg_ptr+1) == '\0') sv_setiv(sv, (IV)((PL_dowarn & G_WARN_ON) ? TRUE : FALSE)); else if (strEQ(mg->mg_ptr+1, "ARNING_BITS")) { - if (PL_compiling.cop_warnings == pWARN_NONE || - PL_compiling.cop_warnings == pWARN_STD) - { + if (PL_compiling.cop_warnings == pWARN_NONE) { sv_setpvn(sv, WARN_NONEstring, WARNsize) ; - } + } + else if (PL_compiling.cop_warnings == pWARN_STD) { + sv_setpvn( + sv, + (PL_dowarn & G_WARN_ON) ? WARN_ALLstring : WARN_NONEstring, + WARNsize + ); + } else if (PL_compiling.cop_warnings == pWARN_ALL) { /* Get the bit mask for $warnings::Bits{all}, because * it could have been extended by warnings::register */ diff --git a/t/io/binmode.t b/t/io/binmode.t index be198ae645..41eff4a24f 100644 --- a/t/io/binmode.t +++ b/t/io/binmode.t @@ -35,7 +35,7 @@ SKIP: { skip "minitest", 1 if $ENV{PERL_CORE_MINITEST}; skip "no EBADF", 1 if (!exists &Errno::EBADF); - no warnings 'io'; + no warnings 'io', 'once'; $! = 0; binmode(B); ok($! == &Errno::EBADF); diff --git a/t/lib/warnings/2use b/t/lib/warnings/2use index 7810287a3a..eef0f3ffec 100644 --- a/t/lib/warnings/2use +++ b/t/lib/warnings/2use @@ -72,6 +72,12 @@ my $a =+ 1 ; EXPECT Reversed += operator at - line 3. ######## +-w +no warnings 'reserved' ; +foo.bar; +EXPECT +Useless use of concatenation (.) or string in void context at - line 3. +######## --FILE-- abc my $a =+ 1 ; |