summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mg.c13
-rw-r--r--t/io/binmode.t2
-rw-r--r--t/lib/warnings/2use6
3 files changed, 16 insertions, 5 deletions
diff --git a/mg.c b/mg.c
index d3a001af4c..46b2d75000 100644
--- a/mg.c
+++ b/mg.c
@@ -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 ;