diff options
author | Yves Orton <demerphq@gmail.com> | 2023-03-08 15:04:53 +0100 |
---|---|---|
committer | Yves Orton <demerphq@gmail.com> | 2023-03-18 21:00:54 +0800 |
commit | b689ed93d1ae924a59738611b98517cbe071b1ab (patch) | |
tree | d27246474fd1a4479760be4852039b80611d3388 | |
parent | 2d8fceed5417cb8fcc169f35f36ea58b7bb9cded (diff) | |
download | perl-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.h | 8 | ||||
-rw-r--r-- | lib/warnings.pm | 43 | ||||
-rw-r--r-- | op.c | 2 | ||||
-rw-r--r-- | pod/perldiag.pod | 12 | ||||
-rw-r--r-- | regen/warnings.pl | 1 | ||||
-rw-r--r-- | warnings.h | 13 |
6 files changed, 46 insertions, 33 deletions
@@ -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 | @@ -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 |