Deprecation of an unqualified dump() to mean CORE::dump().
authorAbigail <abigail@abigail.be>
Fri, 13 Jan 2017 21:36:47 +0000 (22:36 +0100)
committerAbigail <abigail@abigail.be>
Mon, 16 Jan 2017 18:18:15 +0000 (19:18 +0100)
This will no longer be allowed in 5.30.

pod/perldeprecation.pod
pod/perldiag.pod
t/lib/croak/pp_ctl
t/lib/warnings/toke
t/op/dump.t
toke.c

index adb0737..bdacbc2 100644 (file)
@@ -55,6 +55,13 @@ in Perl 5.26. Due to an oversight, not all cases of a use of a literal
 C<{> got a deprecation warning. These cases started warning in Perl 5.26,
 and they will be fatal by Perl 5.30.
 
+=head3 Unqualified C<dump()>
+
+Use of C<dump()> instead of C<CORE::dump()> was deprecated in Perl 5.8,
+and an unqualified C<dump()> will no longer be available in Perl 5.30.
+
+See L<perlfunc/dump>.
+
 
 =head2 Perl 5.28
 
index 08e1c55..aedec64 100644 (file)
@@ -2077,10 +2077,15 @@ something that isn't defined yet, you don't actually have to define the
 subroutine or package before the current location.  You can use an empty
 "sub foo;" or "package FOO;" to enter a "forward" declaration.
 
-=item dump() better written as CORE::dump()
+=item dump() better written as CORE::dump(). dump() will no longer be available in Perl 5.30
 
-(W misc) You used the obsolescent C<dump()> built-in function, without fully
-qualifying it as C<CORE::dump()>.  Maybe it's a typo.  See L<perlfunc/dump>.
+(D deprecated, misc) You used the obsolescent C<dump()> built-in function,
+without fully qualifying it as C<CORE::dump()>. Maybe it's a typo.
+
+Use of a unqualified C<dump()> was deprecated in Perl 5.30, and this
+will not be available in Perl 5.30.
+
+See L<perlfunc/dump>.
 
 =item dump is not supported
 
@@ -3127,11 +3132,10 @@ C<:utf8> layer.
 =item "%s" is more clearly written simply as "%s" in regex. This will be a fatal error in Perl 5.28; marked by S<<-- HERE> in m/%s/
 
 (W deprecated, regexp) (only under C<S<use re 'strict'>> or within C<(?[...])>)
-The C<\cI<X>> construct is intended to be a way to specify non-printable
-characters.  You used it for a printable one, which is better written
-as simply itself, perhaps preceded by a backslash for non-word
-characters.  Doing it the way you did is not portable between ASCII
-and EBCDIC platforms.
+
+You specified a character that has the given plainer way of writing it,
+and which is also portable to platforms running with different character
+sets. This usage is deprecated, and will be a fatal error in Perl 5.28.
 
 =item '%s' is not a code reference
 
index ee1edba..ec66413 100644 (file)
@@ -1,9 +1,10 @@
 __END__
 # NAME dump with computed label
+no warnings 'deprecated';
 my $label = "foo";
 dump $label;
 EXPECT
-Can't find label foo at - line 2.
+Can't find label foo at - line 3.
 ########
 # NAME when outside given
 use 5.01; no warnings 'experimental::smartmatch';
index 3d5044d..95b7bfa 100644 (file)
@@ -1078,11 +1078,28 @@ Integer overflow in octal number at - line 11.
 ########
 # toke.c
 BEGIN { $^C = 1; }
+dump;
+CORE::dump;
+EXPECT
+dump() better written as CORE::dump(). dump() will no longer be available in Perl 5.30 at - line 3.
+- syntax OK
+########
+# toke.c
+BEGIN { $^C = 1; }
+no warnings 'deprecated';
+dump;
+CORE::dump;
+EXPECT
+- syntax OK
+########
+# toke.c
+BEGIN { $^C = 1; }
+no warnings 'deprecated';
 use warnings 'misc';
 dump;
 CORE::dump;
 EXPECT
-dump() better written as CORE::dump() at - line 4.
+dump() better written as CORE::dump(). dump() will no longer be available in Perl 5.30 at - line 5.
 - syntax OK
 ########
 # toke.c
index 6b53a06..2edba20 100644 (file)
@@ -63,7 +63,13 @@ plan(2);
 # By do the dump in a child, the parent perl process exits back to sh with
 # a normal exit value, so sh won't complain.
 
+# An unqualified dump() will give a deprecation warning. Usually, we'd
+# do a "no warnings 'deprecated'" to shut this off, but since we have
+# chdirred to /tmp, a 'no' won't find the pragma. Hence the fiddling with
+# $SIG{__WARN__}.
+
 fresh_perl_like(<<'PROG', qr/\AA(?!B\z)/, {}, "plain dump quits");
+BEGIN {$SIG {__WARN__} = sub {1;}}
 ++$|;
 my $pid = fork;
 die "fork: $!\n" unless defined $pid;
@@ -80,6 +86,7 @@ else {
 PROG
 
 fresh_perl_like(<<'PROG', qr/A(?!B\z)/, {}, "dump with label quits");
+BEGIN {$SIG {__WARN__} = sub {1;}}
 ++$|;
 my $pid = fork;
 die "fork: $!\n" unless defined $pid;
diff --git a/toke.c b/toke.c
index 19463c8..923fc88 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -7029,8 +7029,10 @@ Perl_yylex(pTHX)
            else {                      /* no override */
                tmp = -tmp;
                if (tmp == KEY_dump) {
-                   Perl_ck_warner(aTHX_ packWARN(WARN_MISC),
-                                  "dump() better written as CORE::dump()");
+                   Perl_ck_warner_d(aTHX_ packWARN2(WARN_MISC,WARN_DEPRECATED),
+                                    "dump() better written as CORE::dump(). "
+                                     "dump() will no longer be available " 
+                                     "in Perl 5.30");
                }
                gv = NULL;
                gvp = 0;