summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYves Orton <demerphq@gmail.com>2023-03-08 15:04:53 +0100
committerYves Orton <demerphq@gmail.com>2023-03-18 21:00:54 +0800
commitb689ed93d1ae924a59738611b98517cbe071b1ab (patch)
treed27246474fd1a4479760be4852039b80611d3388
parent2d8fceed5417cb8fcc169f35f36ea58b7bb9cded (diff)
downloadperl-b689ed93d1ae924a59738611b98517cbe071b1ab.tar.gz
warnings.pm - add deprecated::version_downgrade category
This also fixes the version_downgrade to show the correct version that version downgrades will be removed in.
-rw-r--r--handy.h8
-rw-r--r--lib/warnings.pm43
-rw-r--r--op.c2
-rw-r--r--pod/perldiag.pod12
-rw-r--r--regen/warnings.pl1
-rw-r--r--warnings.h13
6 files changed, 46 insertions, 33 deletions
diff --git a/handy.h b/handy.h
index 3f1922728c..5444aa65ae 100644
--- a/handy.h
+++ b/handy.h
@@ -2961,11 +2961,11 @@ last-inclusive range.
#ifdef PERL_CORE
# define deprecate(category,s) Perl_ck_warner_d(aTHX_ packWARN(category), \
"Use of " s " is deprecated")
-# define deprecate_disappears_in(when,message) \
- Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \
+# define deprecate_disappears_in(category,when,message) \
+ Perl_ck_warner_d(aTHX_ packWARN(category), \
message " is deprecated, and will disappear in Perl " when)
-# define deprecate_fatal_in(when,message) \
- Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \
+# define deprecate_fatal_in(category,when,message) \
+ Perl_ck_warner_d(aTHX_ packWARN(category), \
message " is deprecated, and will become fatal in Perl " when)
#endif
diff --git a/lib/warnings.pm b/lib/warnings.pm
index 5dd848c1e2..b484bc4d49 100644
--- a/lib/warnings.pm
+++ b/lib/warnings.pm
@@ -117,17 +117,20 @@ our %Offsets = (
'experimental::for_list' => 146,
'scalar' => 148,
+ # Warnings Categories added in Perl 5.035009
+ 'deprecated::version_downgrade' => 150,
+
# Warnings Categories added in Perl 5.03501
- 'deprecated::delimiter_will_be_paired'=> 150,
+ 'deprecated::delimiter_will_be_paired'=> 152,
# Warnings Categories added in Perl 5.037
- 'experimental::class' => 152,
+ 'experimental::class' => 154,
# Warnings Categories added in Perl 5.037009
- 'deprecated::apostrophe_as_package_separator'=> 154,
+ 'deprecated::apostrophe_as_package_separator'=> 156,
# Warnings Categories added in Perl 5.03701
- 'deprecated::smartmatch' => 156,
+ 'deprecated::smartmatch' => 158,
);
our %Bits = (
@@ -137,20 +140,21 @@ our %Bits = (
'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x40\x00\x00\x40\x14", # [2,48,49,63,75,77,78]
- 'deprecated::apostrophe_as_package_separator'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [77]
- 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [75]
+ 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x40\x00\x00\x40\x51", # [2,48,49,63,75,76,78,79]
+ 'deprecated::apostrophe_as_package_separator'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [78]
+ 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [76]
'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [63]
'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [48]
- 'deprecated::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [78]
+ 'deprecated::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40", # [79]
'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [49]
+ 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [75]
'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x15\x10\x54\x55\x05\x01", # [53,54,56..58,62,65..73,76]
+ 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x15\x10\x54\x55\x05\x04", # [53,54,56..58,62,65..73,77]
'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [69]
'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [70]
- 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [76]
+ 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [77]
'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [56]
'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [62]
'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [71]
@@ -219,20 +223,21 @@ our %DeadBits = (
'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x80\x00\x00\x80\x28", # [2,48,49,63,75,77,78]
- 'deprecated::apostrophe_as_package_separator'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [77]
- 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [75]
+ 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x80\x00\x00\x80\xa2", # [2,48,49,63,75,76,78,79]
+ 'deprecated::apostrophe_as_package_separator'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [78]
+ 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [76]
'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [63]
'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [48]
- 'deprecated::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [78]
+ 'deprecated::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80", # [79]
'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [49]
+ 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [75]
'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x2a\x20\xa8\xaa\x0a\x02", # [53,54,56..58,62,65..73,76]
+ 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x2a\x20\xa8\xaa\x0a\x08", # [53,54,56..58,62,65..73,77]
'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [69]
'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [70]
- 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [76]
+ 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [77]
'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [56]
'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [62]
'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [71]
@@ -307,8 +312,8 @@ our %NoOp = (
# These are used by various things, including our own tests
our $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x05\x00\x55\x50\x54\x55\x45\x15"; # [2,4,22,23,25,48,49,56..59,62,63,65..73,75..78]
-our $LAST_BIT = 158 ;
+our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x05\x00\x55\x50\x54\x55\x45\x55"; # [2,4,22,23,25,48,49,56..59,62,63,65..73,75..79]
+our $LAST_BIT = 160 ;
our $BYTES = 20 ;
sub Croaker
@@ -922,6 +927,8 @@ The current hierarchy is:
| +- deprecated::smartmatch
| |
| +- deprecated::unicode_property_name
+ | |
+ | +- deprecated::version_downgrade
|
+- exiting
|
diff --git a/op.c b/op.c
index e36cfbddf8..cf3f034f4e 100644
--- a/op.c
+++ b/op.c
@@ -7914,7 +7914,7 @@ Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg)
/* otherwise they are off */
else {
if(PL_prevailing_version >= SHORTVER(5, 11))
- deprecate_fatal_in("5.40",
+ deprecate_fatal_in(WARN_DEPRECATED__VERSION_DOWNGRADE, "5.40",
"Downgrading a use VERSION declaration to below v5.11");
if (!(PL_hints & HINT_EXPLICIT_STRICT_REFS))
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index 4b5c6afb9a..3bf01ce41f 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -2185,12 +2185,12 @@ somehow called on another platform. This should not happen.
=item Downgrading a use VERSION declaration to below v5.11 is deprecated
-(S deprecated) This warning is emitted on a C<use VERSION> statement that
-requests a version below v5.11 (when the effects of C<use strict> would be
-disabled), after a previous declaration of one having a larger number (which
-would have enabled these effects). Because of a change to the way that
-C<use VERSION> interacts with the strictness flags, this is no longer
-supported.
+(S deprecated::version_downgrade) This warning is emitted on a
+C<use VERSION> statement that requests a version below v5.11 (when the
+effects of C<use strict> would be disabled), after a previous
+declaration of one having a larger number (which would have enabled
+these effects). Because of a change to the way that C<use VERSION>
+interacts with the strictness flags, this is no longer supported.
=item (Do you need to predeclare %s?)
diff --git a/regen/warnings.pl b/regen/warnings.pl
index 2b4fc27f03..6b49709c6a 100644
--- a/regen/warnings.pl
+++ b/regen/warnings.pl
@@ -81,6 +81,7 @@ my $TREE = {
'deprecated::apostrophe_as_package_separator' => [ 5.037009, DEFAULT_ON],
'deprecated::delimiter_will_be_paired' => [ 5.035010, DEFAULT_ON],
'deprecated::goto_construct' => [ 5.011003, DEFAULT_ON],
+ 'deprecated::version_downgrade' => [ 5.035009, DEFAULT_ON],
}],
'void' => [ 5.008, DEFAULT_OFF],
'recursion' => [ 5.008, DEFAULT_OFF],
diff --git a/warnings.h b/warnings.h
index e912397c23..50b105eebf 100644
--- a/warnings.h
+++ b/warnings.h
@@ -140,21 +140,25 @@
#define WARN_EXPERIMENTAL__FOR_LIST 73
#define WARN_SCALAR 74
+/* Warnings Categories added in Perl 5.035009 */
+
+#define WARN_DEPRECATED__VERSION_DOWNGRADE 75
+
/* Warnings Categories added in Perl 5.03501 */
-#define WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED 75
+#define WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED 76
/* Warnings Categories added in Perl 5.037 */
-#define WARN_EXPERIMENTAL__CLASS 76
+#define WARN_EXPERIMENTAL__CLASS 77
/* Warnings Categories added in Perl 5.037009 */
-#define WARN_DEPRECATED__APOSTROPHE_AS_PACKAGE_SEPARATOR 77
+#define WARN_DEPRECATED__APOSTROPHE_AS_PACKAGE_SEPARATOR 78
/* Warnings Categories added in Perl 5.03701 */
-#define WARN_DEPRECATED__SMARTMATCH 78
+#define WARN_DEPRECATED__SMARTMATCH 79
#define WARNsize 20
#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
@@ -344,6 +348,7 @@ category parameters passed.
=for apidoc Amnh||WARN_EXPERIMENTAL__EXTRA_PAIRED_DELIMITERS
=for apidoc Amnh||WARN_EXPERIMENTAL__FOR_LIST
=for apidoc Amnh||WARN_SCALAR
+=for apidoc Amnh||WARN_DEPRECATED__VERSION_DOWNGRADE
=for apidoc Amnh||WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED
=for apidoc Amnh||WARN_EXPERIMENTAL__CLASS
=for apidoc Amnh||WARN_DEPRECATED__APOSTROPHE_AS_PACKAGE_SEPARATOR