diff --git a/lib/warnings.pm b/lib/warnings.pm index 2db07f77d082..bcb14bbfcc5b 100644 --- a/lib/warnings.pm +++ b/lib/warnings.pm @@ -5,7 +5,7 @@ package warnings; -our $VERSION = "1.75"; +our $VERSION = "1.76"; # Verify that we're called correctly so that warnings will work. # Can't use Carp, since Carp uses us! @@ -69,244 +69,242 @@ our %Offsets = ( 'illegalproto' => 94, # Warnings Categories added in Perl 5.011003 - 'deprecated::goto_construct' => 96, - 'deprecated::unicode_property_name' => 98, + 'deprecated::unicode_property_name' => 96, # Warnings Categories added in Perl 5.013 - 'non_unicode' => 100, - 'nonchar' => 102, - 'surrogate' => 104, + 'non_unicode' => 98, + 'nonchar' => 100, + 'surrogate' => 102, # Warnings Categories added in Perl 5.017 - 'experimental' => 106, - 'experimental::regex_sets' => 108, + 'experimental' => 104, + 'experimental::regex_sets' => 106, # Warnings Categories added in Perl 5.019 - 'syscalls' => 110, + 'syscalls' => 108, # Warnings Categories added in Perl 5.021 - 'experimental::re_strict' => 112, - 'experimental::refaliasing' => 114, - 'locale' => 116, - 'missing' => 118, - 'redundant' => 120, + 'experimental::re_strict' => 110, + 'experimental::refaliasing' => 112, + 'locale' => 114, + 'missing' => 116, + 'redundant' => 118, # Warnings Categories added in Perl 5.025 - 'experimental::declared_refs' => 122, + 'experimental::declared_refs' => 120, # Warnings Categories added in Perl 5.025011 - 'deprecated::dot_in_inc' => 124, + 'deprecated::dot_in_inc' => 122, # Warnings Categories added in Perl 5.027 - 'shadow' => 126, + 'shadow' => 124, # Warnings Categories added in Perl 5.029 - 'experimental::private_use' => 128, - 'experimental::uniprop_wildcards' => 130, - 'experimental::vlb' => 132, + 'experimental::private_use' => 126, + 'experimental::uniprop_wildcards' => 128, + 'experimental::vlb' => 130, # Warnings Categories added in Perl 5.033 - 'experimental::try' => 134, + 'experimental::try' => 132, # Warnings Categories added in Perl 5.035 - 'experimental::args_array_with_signatures'=> 136, - 'experimental::builtin' => 138, - 'experimental::defer' => 140, - 'experimental::extra_paired_delimiters'=> 142, - 'scalar' => 144, + 'experimental::args_array_with_signatures'=> 134, + 'experimental::builtin' => 136, + 'experimental::defer' => 138, + 'experimental::extra_paired_delimiters'=> 140, + 'scalar' => 142, # Warnings Categories added in Perl 5.035009 - 'deprecated::version_downgrade' => 146, + 'deprecated::version_downgrade' => 144, # Warnings Categories added in Perl 5.03501 - 'deprecated::delimiter_will_be_paired'=> 148, + 'deprecated::delimiter_will_be_paired'=> 146, # Warnings Categories added in Perl 5.037 - 'experimental::class' => 150, + 'experimental::class' => 148, # Warnings Categories added in Perl 5.039002 - 'deprecated::missing_import_called_with_args'=> 152, + 'deprecated::missing_import_called_with_args'=> 150, # Warnings Categories added in Perl 5.039008 - 'deprecated::subsequent_use_version'=> 154, + 'deprecated::subsequent_use_version'=> 152, # Warnings Categories added in Perl 5.041 - 'experimental::keyword_all' => 156, - 'experimental::keyword_any' => 158, + 'experimental::keyword_all' => 154, + 'experimental::keyword_any' => 156, # Warnings Categories added in Perl 5.043 - 'experimental::signature_named_parameters'=> 160, + 'experimental::signature_named_parameters'=> 158, ); our %Bits = ( - 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55", # [0..83] - 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29] - 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30] - 'closed' => "\x00\x10\x00\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\x00", # [1] - 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\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\x10\x00\x00\x14\x05\x00", # [2,48,49,62,73,74,76,77] - 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [74] - 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [62] - 'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [48] - 'deprecated::missing_import_called_with_args'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [76] - 'deprecated::subsequent_use_version'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [77] - 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\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\x04\x00\x00", # [73] - 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\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\x00", # [7] - 'exiting' => "\x40\x00\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\x05\x04\x55\x55\x40\x50\x01", # [53,54,56,57,61,64..71,75,78..80] - 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [68] - 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [69] - 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [75] - 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [61] - 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [70] - 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [71] - 'experimental::keyword_all' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [78] - 'experimental::keyword_any' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [79] - 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [64] - 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [56] - 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [57] - 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [54] - 'experimental::signature_named_parameters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [80] - 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [67] - 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [65] - 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [66] - 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] - 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [47] - 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [46] - 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23] - 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24] - 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [5..11,55] - 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] - 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [58] - 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25] - 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] - 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [59] - 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] - 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [50] - 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [51] - 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] - 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] - 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] - 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16] - 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32] - 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] - 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17] - 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33] - 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34] - 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35] - 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36] - 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18] - 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19] - 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [60] - 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20] - 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37] - 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [72] - 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38] - 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25] - 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [63] - 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26] - 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27] - 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [52] - 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47] - 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [55] - 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39] - 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40] - 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41] - 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] - 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42] - 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43] - 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x50\x01\x00\x00\x00\x00\x00\x00\x00", # [44,50..52] - 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [45] + 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55", # [0..79] + 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29] + 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30] + '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\x01\x00\x00\x04\x00\x00\x45\x01", # [2,48,61,72,73,75,76] + 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [73] + 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [61] + 'deprecated::missing_import_called_with_args'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [75] + 'deprecated::subsequent_use_version'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [76] + 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [48] + 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [72] + '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\x45\x01\x41\x55\x15\x10\x54", # [52,53,55,56,60,63..70,74,77..79] + 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [67] + 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [68] + 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [74] + 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [60] + 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [69] + 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [70] + 'experimental::keyword_all' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [77] + 'experimental::keyword_any' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [78] + 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [63] + 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [55] + 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [56] + 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [53] + 'experimental::signature_named_parameters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40", # [79] + 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [66] + 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [64] + 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [65] + 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] + 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [47] + 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [46] + 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23] + 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24] + 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [5..11,54] + 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] + 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [57] + 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25] + 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] + 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [58] + 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] + 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [49] + 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [50] + 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] + 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] + 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] + 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16] + 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32] + 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] + 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17] + 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33] + 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34] + 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35] + 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36] + 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18] + 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19] + 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [59] + 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20] + 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37] + 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [71] + 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38] + 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25] + 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [62] + 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26] + 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27] + 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [51] + 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47] + 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [54] + 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39] + 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40] + 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41] + 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] + 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42] + 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43] + 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x54\x00\x00\x00\x00\x00\x00\x00", # [44,49..51] + 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [45] ); our %DeadBits = ( - 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", # [0..83] - 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29] - 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30] - 'closed' => "\x00\x20\x00\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\x00", # [1] - 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\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\x20\x00\x00\x28\x0a\x00", # [2,48,49,62,73,74,76,77] - 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [74] - 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [62] - 'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [48] - 'deprecated::missing_import_called_with_args'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [76] - 'deprecated::subsequent_use_version'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [77] - 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\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\x08\x00\x00", # [73] - 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\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\x00", # [7] - 'exiting' => "\x80\x00\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\x0a\x08\xaa\xaa\x80\xa0\x02", # [53,54,56,57,61,64..71,75,78..80] - 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [68] - 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [69] - 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [75] - 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [61] - 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [70] - 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [71] - 'experimental::keyword_all' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [78] - 'experimental::keyword_any' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [79] - 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [64] - 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [56] - 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [57] - 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [54] - 'experimental::signature_named_parameters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [80] - 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [67] - 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [65] - 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [66] - 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] - 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [47] - 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [46] - 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23] - 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24] - 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [5..11,55] - 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] - 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [58] - 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25] - 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] - 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [59] - 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] - 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [50] - 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [51] - 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] - 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] - 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] - 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16] - 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32] - 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] - 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17] - 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33] - 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34] - 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35] - 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36] - 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18] - 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19] - 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [60] - 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20] - 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37] - 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [72] - 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38] - 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25] - 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [63] - 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26] - 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27] - 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [52] - 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47] - 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [55] - 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39] - 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40] - 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41] - 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] - 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42] - 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43] - 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xa0\x02\x00\x00\x00\x00\x00\x00\x00", # [44,50..52] - 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [45] + 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", # [0..79] + 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29] + 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30] + '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\x02\x00\x00\x08\x00\x00\x8a\x02", # [2,48,61,72,73,75,76] + 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [73] + 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [61] + 'deprecated::missing_import_called_with_args'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [75] + 'deprecated::subsequent_use_version'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [76] + 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [48] + 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [72] + '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\x8a\x02\x82\xaa\x2a\x20\xa8", # [52,53,55,56,60,63..70,74,77..79] + 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [67] + 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [68] + 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [74] + 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [60] + 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [69] + 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [70] + 'experimental::keyword_all' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [77] + 'experimental::keyword_any' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [78] + 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [63] + 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [55] + 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [56] + 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [53] + 'experimental::signature_named_parameters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80", # [79] + 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [66] + 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [64] + 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [65] + 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4] + 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [47] + 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [46] + 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23] + 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24] + 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [5..11,54] + 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8] + 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [57] + 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25] + 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12] + 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [58] + 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9] + 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [49] + 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [50] + 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13] + 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14] + 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15] + 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16] + 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32] + 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10] + 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17] + 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33] + 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34] + 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35] + 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36] + 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18] + 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19] + 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [59] + 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20] + 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37] + 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [71] + 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38] + 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25] + 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [62] + 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26] + 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27] + 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [51] + 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47] + 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [54] + 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39] + 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40] + 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41] + 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11] + 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42] + 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43] + 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xa8\x00\x00\x00\x00\x00\x00\x00", # [44,49..51] + 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [45] ); our %NoOp = ( + 'deprecated::goto_construct' => 1, 'deprecated::smartmatch' => 1, 'experimental::alpha_assertions' => 1, 'experimental::bitwise' => 1, @@ -321,10 +319,10 @@ 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\0"; -our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x05\x00\x15\x14\x55\x55\x54\x55\x01"; # [2,4,22,23,25,48,49,56..58,61,62,64..71,73..80] -our $LAST_BIT = 162 ; -our $BYTES = 21 ; +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\x01\x40\x05\x45\x55\x15\x55\x55"; # [2,4,22,23,25,48,55..57,60,61,63..70,72..79] +our $LAST_BIT = 160 ; +our $BYTES = 20 ; sub Croaker { @@ -930,8 +928,6 @@ The current hierarchy is: | | | +- deprecated::dot_in_inc | | - | +- deprecated::goto_construct - | | | +- deprecated::missing_import_called_with_args | | | +- deprecated::subsequent_use_version diff --git a/pod/perldelta.pod b/pod/perldelta.pod index 4e87d9d6228b..b3cc104a1ae8 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -47,7 +47,14 @@ XXX For a release on a stable branch, this section aspires to be: =head1 Deprecations -XXX Any deprecated features, syntax, modules etc. should be listed here. +=over 4 + +=item * + +Using C to jump into the body of a loop or other block construct from +outside is no longer permitted. [L] + +=back =head2 Module removals diff --git a/pod/perldeprecation.pod b/pod/perldeprecation.pod index 433b0881e923..648167926b99 100644 --- a/pod/perldeprecation.pod +++ b/pod/perldeprecation.pod @@ -69,12 +69,10 @@ prevailing version to another. Category: "deprecated::subsequent_use_version" -=head2 Perl 5.42 - =head3 Goto Block Construct -C will produce a deprecated warning when jumping into the body -of a loop or other block construct from outside. For instance +C now produces an exception when jumping into the body of a loop +or other block construct from outside. For instance while (should_loop($x)) { LABEL: @@ -82,12 +80,16 @@ of a loop or other block construct from outside. For instance } goto LABEL; -will produce a warning that this behavior is deprecated. In general you should -just avoid doing this; the people that maintain your code will be grateful for -your restraint. +now throws an exception indicating that this behavior is no longer permitted. Category: "deprecated::goto_construct" +=head2 Perl 5.42 + +There were no deprecations or fatalizations in Perl 5.42. (There were +deprecations we I to do in Perl 5.42 but failed to carry out; they +have been re-scheduled.) + =head2 Perl 5.40 =head3 Downgrading a C to below v5.11 diff --git a/pod/perldiag.pod b/pod/perldiag.pod index cdb7b1eb0882..2498af2cf485 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -7923,6 +7923,10 @@ For speed and efficiency reasons, Perl internally does not do full reference-counting of iterated items, hence deleting such an item in the middle of an iteration causes Perl to see a freed value. +=item Use of "goto" to jump into a construct is no longer permitted + +(F) More TO COME. + =item Use of /g modifier is meaningless in split (W regexp) You used the /g modifier on the pattern for a C diff --git a/pod/perlfunc.pod b/pod/perlfunc.pod index 5baf11db7635..ef2cc3e40dd6 100644 --- a/pod/perlfunc.pod +++ b/pod/perlfunc.pod @@ -3726,17 +3726,14 @@ delimit its argument. C is equivalent to C. Also, unlike most named operators, this has the same precedence as assignment. -Use of C or C to jump into a construct is -deprecated and will issue a warning; it will become a fatal error in -Perl 5.42. While still available, it may not be used to -go into any construct that requires initialization, such as a -subroutine, a C loop, or a C -block. In general, it may not be used to jump into the parameter -of a binary or list operator, but it may be used to jump into the -I parameter of a binary operator. (The C<=> -assignment operator's "first" operand is its right-hand -operand.) It also can't be used to go into a -construct that is optimized away. +Use of C or C to jump into a construct becomes an +exception in Perl 5.44; a fatal error notification is emitted. It may not be +used to go into any construct that requires initialization, such as a +subroutine, a C loop, or a C block. In general, it may not be +used to jump into the parameter of a binary or list operator, but it may be +used to jump into the I parameter of a binary operator. (The C<=> +assignment operator's "first" operand is its right-hand operand.) It also +can't be used to go into a construct that is optimized away. The C form is quite different from the other forms of C. In fact, it isn't a goto in the normal sense at diff --git a/pp_ctl.c b/pp_ctl.c index a3d646996129..e152c2023210 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -3683,10 +3683,7 @@ PP(pp_goto) } if (into_construct) - deprecate_fatal_in(WARN_DEPRECATED__GOTO_CONSTRUCT, - "5.42", - "Use of \"goto\" to jump into a construct"); - + croak("Use of \"goto\" to jump into a construct is no longer permitted"); if (do_dump) { #ifdef VMS diff --git a/regen/warnings.pl b/regen/warnings.pl index 230d5fa059a6..92d582050374 100644 --- a/regen/warnings.pl +++ b/regen/warnings.pl @@ -16,7 +16,7 @@ # # This script is normally invoked from regen.pl. -$VERSION = '1.75'; +$VERSION = '1.76'; BEGIN { require './regen/regen_lib.pl'; @@ -189,6 +189,7 @@ BEGIN # the experiments were successful (or abandonned), # so no warning bit is needed anymore my %NO_BIT_FOR = map { ( uc $_ => 1, $_ => 1 ) } qw( + deprecated::goto_construct deprecated::smartmatch experimental::lexical_subs experimental::postderef diff --git a/t/comp/package_block.t b/t/comp/package_block.t index e3494e57548c..0346dd75c1de 100644 --- a/t/comp/package_block.t +++ b/t/comp/package_block.t @@ -1,6 +1,6 @@ #!./perl -print "1..7\n"; +print "1..5\n"; $main::result = ""; eval q{ @@ -55,38 +55,3 @@ eval q{ $main::result .= "f(".__LINE__.")"; }; print $main::result eq "a(2)b(4)c(6)d(8)e(10)f(12)" ? "ok 5\n" : "not ok 5\n"; - -$main::result = ""; -$main::warning = ""; -$SIG{__WARN__} = sub { $main::warning .= $_[0]; }; -eval q{ - $main::result .= "a(".__PACKAGE__."/".eval("__PACKAGE__").")"; - goto l0; - $main::result .= "b(".__PACKAGE__."/".eval("__PACKAGE__").")"; - package Foo { - $main::result .= "c(".__PACKAGE__."/".eval("__PACKAGE__").")"; - l0: - $main::result .= "d(".__PACKAGE__."/".eval("__PACKAGE__").")"; - goto l1; - $main::result .= "e(".__PACKAGE__."/".eval("__PACKAGE__").")"; - } - $main::result .= "f(".__PACKAGE__."/".eval("__PACKAGE__").")"; - l1: - $main::result .= "g(".__PACKAGE__."/".eval("__PACKAGE__").")"; - goto l2; - $main::result .= "h(".__PACKAGE__."/".eval("__PACKAGE__").")"; - package Bar { - l2: - $main::result .= "i(".__PACKAGE__."/".eval("__PACKAGE__").")"; - } - $main::result .= "j(".__PACKAGE__."/".eval("__PACKAGE__").")"; -}; -print $main::result eq - "a(main/main)d(Foo/Foo)g(main/main)i(Bar/Bar)j(main/main)" ? - "ok 6\n" : "not ok 6\n"; -print $main::warning =~ /\A - Use\ of\ "goto"\ [^\n]*\ line\ 3\.\n - Use\ of\ "goto"\ [^\n]*\ line\ 15\.\n - \z/x ? "ok 7\n" : "not ok 7\n"; - -1; diff --git a/t/op/goto.t b/t/op/goto.t index f0b74b27d16a..5ee428231f0b 100644 --- a/t/op/goto.t +++ b/t/op/goto.t @@ -6,54 +6,38 @@ BEGIN { chdir 't' if -d 't'; require "./test.pl"; set_up_inc( qw(. ../lib) ); - require './charset_tools.pl'; + require './charset_tools.pl'; } use warnings; use strict; use Config; -plan tests => 97; +plan tests => 75; our $TODO; -my $deprecated = 0; - -local $SIG{__WARN__} = sub { - if ($_[0] =~ m/jump into a construct.*?, and will become fatal in Perl 5\.42/) { - $deprecated++; - } - else { warn $_[0] } -}; - our $foo; while ($?) { $foo = 1; label1: - is($deprecated, 1, "following label1"); - $deprecated = 0; $foo = 2; goto label2; -} continue { +} +continue { $foo = 0; goto label4; label3: - is($deprecated, 1, "following label3"); - $deprecated = 0; $foo = 4; goto label4; } -is($deprecated, 0, "after 'while' loop"); -goto label1; $foo = 3; label2: -is($foo, 2, 'escape while loop'); -is($deprecated, 0, "following label2"); -goto label3; +is($foo, 3, 'escape while loop'); label4: -is($foo, 4, 'second escape while loop'); +is($foo, 3, 'second escape while loop'); my $r = run_perl(prog => 'goto foo;', stderr => 1); like($r, qr/label/, 'cant find label'); @@ -75,11 +59,7 @@ sub bar { } &bar; -fail('goto bypass'); -exit; - -FINALE: -is(curr_test(), 11, 'FINALE'); +pass('goto bypass'); # does goto LABEL handle block contexts correctly? # note that this scope-hopping differs from last & next, @@ -88,20 +68,20 @@ my $count = 0; my $cond = 1; for (1) { if ($cond == 1) { - $cond = 0; - goto OTHER; + $cond = 0; + goto OTHER; } elsif ($cond == 0) { OTHER: - $cond = 2; - is($count, 0, 'OTHER'); - $count++; - goto THIRD; + $cond = 2; + is($count, 0, 'OTHER'); + $count++; + goto THIRD; } else { - THIRD: - is($count, 1, 'THIRD'); - $count++; + THIRD: + is($count, 1, 'THIRD'); + $count++; } } is($count, 2, 'end of loop'); @@ -110,9 +90,9 @@ is($count, 2, 'end of loop'); # (BUG ID 20010309.004 (#5998)) for(my $i=0;!$i++;) { - my $x=1; - goto label; - label: is($x, 1, 'goto inside a for(;;) loop body from inside the body'); + my $x=1; + goto label; + label: is($x, 1, 'goto inside a for(;;) loop body from inside the body'); } # Does goto work correctly going *to* a for(;;) loop? @@ -121,28 +101,29 @@ for(my $i=0;!$i++;) { my ($z, $y) = (0); FORL1: for ($y=1; $z;) { ok($y, 'goto a for(;;) loop, from outside (does initializer)'); - goto TEST19} + goto TEST19 +} ($y,$z) = (0, 1); goto FORL1; # Even from within the loop? TEST19: $z = 0; FORL2: for($y=1; 1;) { - if ($z) { - ok($y, 'goto a for(;;) loop, from inside (does initializer)'); - last; - } - ($y, $z) = (0, 1); - goto FORL2; + if ($z) { + ok($y, 'goto a for(;;) loop, from inside (does initializer)'); + last; + } + ($y, $z) = (0, 1); + goto FORL2; } # Does goto work correctly within a eval block? # (BUG ID 20000313.004) - [perl #2359] my $ok = 0; eval { - my $variable = 1; - goto LABEL20; - LABEL20: $ok = 1 if $variable; + my $variable = 1; + goto LABEL20; + LABEL20: $ok = 1 if $variable; }; ok($ok, 'works correctly within a eval block'); is($@, "", '...and $@ not set'); @@ -150,9 +131,9 @@ is($@, "", '...and $@ not set'); # And within an eval-string? $ok = 0; eval q{ - my $variable = 1; - goto LABEL21; - LABEL21: $ok = 1 if $variable; + my $variable = 1; + goto LABEL21; + LABEL21: $ok = 1 if $variable; }; ok($ok, 'works correctly within an eval string'); is($@, "", '...and $@ still not set'); @@ -160,16 +141,17 @@ is($@, "", '...and $@ still not set'); # Test that goto works in nested eval-string $ok = 0; -{eval q{ - eval q{ - goto LABEL22; - }; - $ok = 0; - last; - - LABEL22: $ok = 1; -}; -$ok = 0 if $@; +{ + eval q{ + eval q{ + goto LABEL22; + }; + $ok = 0; + last; + + LABEL22: $ok = 1; + }; + $ok = 0 if $@; } ok($ok, 'works correctly in a nested eval string'); @@ -190,21 +172,11 @@ ok($ok, 'works correctly in a nested eval string'); $ok = 0; sub a { - A: { if ($false) { redo A; B: $ok = 1; redo A; } } - goto B unless $count++; + A: { if ($false) { redo A; B: $ok = 1; redo A; } } } - is($deprecated, 0, "before calling sub a()"); a(); - ok($ok, '#19061 loop label wiped away by goto'); - is($deprecated, 1, "after calling sub a()"); - $deprecated = 0; $ok = 0; - my $p; - for ($p=1;$p && goto A;$p=0) { A: $ok = 1 } - ok($ok, 'weird case of goto and for(;;) loop'); - is($deprecated, 1, "following goto and for(;;) loop"); - $deprecated = 0; } # bug #22181 - this used to coredump or make $x undefined, due to @@ -249,111 +221,13 @@ returned_label: is($count, 1, 'called i_return_a_label'); ok($ok, 'skipped to returned_label'); -goto moretests; -fail('goto moretests'); -exit; - -bypass: - -is(curr_test(), 9, 'eval "goto $x"'); - { + # test of "computed 'goto'" my $wherever = 'NOWHERE'; eval { goto $wherever }; like($@, qr/Can't find label NOWHERE/, 'goto NOWHERE sets $@'); } -{ - my $wherever = 'FINALE'; - goto $wherever; -} -fail('goto $wherever'); - -moretests: -# test goto duplicated labels. -{ - my $z = 0; - eval { - $z = 0; - for (0..1) { - L4: # not outer scope - $z += 10; - last; - } - goto L4 if $z == 10; - last; - }; - like($@, qr/Can't "goto" into the middle of a foreach loop/, - 'catch goto middle of foreach'); - - $z = 0; - # ambiguous label resolution (outer scope means endless loop!) - L1: - for my $x (0..1) { - $z += 10; - is($z, 10, 'prefer same scope (loop body) to outer scope (loop entry)'); - goto L1 unless $x; - $z += 10; - L1: - is($z, 10, 'prefer same scope: second'); - last; - } - - $z = 0; - L2: - { - $z += 10; - is($z, 10, 'prefer this scope (block body) to outer scope (block entry)'); - goto L2 if $z == 10; - $z += 10; - L2: - is($z, 10, 'prefer this scope: second'); - } - - - { - $z = 0; - while (1) { - L3: # not inner scope - $z += 10; - last; - } - is($z, 10, 'prefer this scope to inner scope'); - goto L3 if $z == 10; - $z += 10; - L3: # this scope ! - is($z, 10, 'prefer this scope to inner scope: second'); - } - - L4: # not outer scope - { - $z = 0; - while (1) { - L4: # not inner scope - $z += 1; - last; - } - is($z, 1, 'prefer this scope to inner,outer scopes'); - goto L4 if $z == 1; - $z += 10; - L4: # this scope ! - is($z, 1, 'prefer this scope to inner,outer scopes: second'); - } - - { - my $loop = 0; - for my $x (0..1) { - L2: # without this, fails 1 (middle) out of 3 iterations - $z = 0; - L2: - $z += 10; - is($z, 10, - "same label, multiple times in same scope (choose 1st) $loop"); - goto L2 if $z == 10 and not $loop++; - } - } -} - # This bug was introduced in Aug 2010 by commit ac56e7de46621c6f # Peephole optimise adjacent pairs of nextstate ops. # and fixed in Oct 2014 by commit f5b5c2a37af87535 @@ -379,24 +253,22 @@ sub DEBUG_TIME() { my $out = ""; $out .= 'perl rules'; goto no_list; - no_list: - is($out, 'perl rules', '$out has not been erroneously reset to undef'); + no_list: + is($out, 'perl rules', '$out has not been erroneously reset to undef'); }; } -is($deprecated, 0, 'no warning was emitted'); - { my $r = runperl( - stderr => 1, - prog => + stderr => 1, + prog => 'for ($_=0;$_<3;$_++){A: if($_==1){next} if($_==2){$_++;goto A}}print qq(ok\n)' ); is($r, "ok\n", 'next and goto'); $r = runperl( - stderr => 1, - prog => + stderr => 1, + prog => 'for ($_=0;$_<3;$_++){A: if($_==1){$_++;redo} if($_==2){$_++;goto A}}print qq(ok\n)' ); is($r, "ok\n", 'redo and goto'); @@ -413,8 +285,6 @@ TODO: { } } -is($deprecated, 0, "following TODOed test for #43403"); - #74290 { my $x; @@ -466,9 +336,11 @@ if($foo eq $foo) { } $foo .= "[9]"; bulgaria: + package Tomsk; $foo .= "[1:".__PACKAGE__."]"; $foo .= "[2:".__PACKAGE__."]"; + package main; $foo .= "[3:".__PACKAGE__."]"; is($foo, "[0:main][1:Tomsk][2:Tomsk][3:main]", "label before package decl"); @@ -478,6 +350,7 @@ if($foo eq $foo) { goto adelaide; } $foo .= "[Z]"; + adelaide: package Cairngorm { $foo .= "[B:".__PACKAGE__."]"; @@ -574,93 +447,42 @@ eval { goto "\0" }; like $@, qr/^Can't find label \0 at /, 'goto "\0"'; TODO: { - local $::TODO = 'RT #45091: goto in CORE::GLOBAL::exit unsupported'; - fresh_perl_is(<<'EOC', "before\ndie handler\n", {stderr => 1}, 'RT #45091: goto in CORE::GLOBAL::EXIT'); - BEGIN { + local $::TODO = 'RT #45091: goto in CORE::GLOBAL::exit unsupported'; + fresh_perl_is(<<'EOC', "before\ndie handler\n", {stderr => 1}, 'RT #45091: goto in CORE::GLOBAL::EXIT'); +BEGIN { *CORE::GLOBAL::exit = sub { - goto FASTCGI_NEXT_REQUEST; + goto FASTCGI_NEXT_REQUEST; }; - } - while (1) { +} +while (1) { eval { that_cgi_script() }; FASTCGI_NEXT_REQUEST: last; - } +} - sub that_cgi_script { +sub that_cgi_script { local $SIG{__DIE__} = sub { print "die handler\n"; exit; print "exit failed?\n"; }; print "before\n"; eval { buggy_code() }; print "after\n"; - } - sub buggy_code { +} +sub buggy_code { die "error!"; print "after die\n"; - } +} EOC } sub revnumcmp ($$) { - goto FOO; - die; - FOO: - return $_[1] <=> $_[0]; + goto FOO; + die; + FOO: + return $_[1] <=> $_[0]; } is eval { join(":", sort revnumcmp (9,5,1,3,7)) }, "9:7:5:3:1", "can goto at top level of multicalled sub"; -# A bit strange, but goingto these constructs should not cause any stack -# problems. Let’s test them to make sure that is the case. -no warnings 'deprecated'; -is \sub :lvalue { goto d; ${*{scalar(do { d: \*foo })}} }->(), \$foo, - 'goto into rv2sv, rv2gv and scalar'; -is sub { goto e; $#{; do { e: \@_ } } }->(1..7), 6, - 'goto into $#{...}'; -is sub { goto f; prototype \&{; do { f: sub ($) {} } } }->(), '$', - 'goto into srefgen, prototype and rv2cv'; -is sub { goto g; ref do { g: [] } }->(), 'ARRAY', - 'goto into ref'; -is sub { goto j; defined undef ${; do { j: \(my $foo = "foo") } } }->(),'', - 'goto into defined and undef'; -is sub { goto k; study ++${; do { k: \(my $foo = "foo") } } }->(),'1', - 'goto into study and preincrement'; -is sub { goto l; ~-!${; do { l: \(my $foo = 0) } }++ }->(),~-1, - 'goto into complement, not, negation and postincrement'; -like sub { goto n; sin cos exp log sqrt do { n: 1 } }->(),qr/^0\.51439/, - 'goto into sin, cos, exp, log, and sqrt'; -ok sub { goto o; srand do { o: 0 } }->(), - 'goto into srand'; -cmp_ok sub { goto p; rand do { p: 1 } }->(), '<', 1, - 'goto into rand'; -is sub { goto r; chr ord length int hex oct abs do { r: -15.5 } }->(), 2, - 'goto into chr, ord, length, int, hex, oct and abs'; -is sub { goto t; ucfirst lcfirst uc lc do { t: "q" } }->(), 'Q', - 'goto into ucfirst, lcfirst, uc and lc'; -{ no strict; - is sub { goto u; \@{; quotemeta do { u: "." } } }->(), \@{'\.'}, - 'goto into rv2av and quotemeta'; -} -is join(" ",sub { goto v; %{; do { v: +{1..2} } } }->()), '1 2', - 'goto into rv2hv'; -is join(" ",sub { goto w; $_ || do { w: "w" } }->()), 'w', - 'goto into rhs of or'; -is join(" ",sub { goto x; $_ && do { x: "w" } }->()), 'w', - 'goto into rhs of and'; -is join(" ",sub { goto z; $_ ? do { z: "w" } : 0 }->()), 'w', - 'goto into first leg of ?:'; -is join(" ",sub { goto z; $_ ? 0 : do { z: "w" } }->()), 'w', - 'goto into second leg of ?:'; -is sub { goto z; caller do { z: 0 } }->(), 'main', - 'goto into caller'; -is sub { goto z; exit do { z: return "foo" } }->(), 'foo', - 'goto into exit'; -is sub { goto z; eval do { z: "'foo'" } }->(), 'foo', - 'goto into eval'; -TODO: { - local $TODO = "glob() does not currently return a list on VMS" if $^O eq 'VMS'; - is join(",",sub { goto z; glob do { z: "foo bar" } }->()), 'foo,bar', - 'goto into glob'; -} + # [perl #132799] # Erroneous inward goto warning, followed by crash. # The eval must be in an assignment. @@ -673,15 +495,44 @@ sub _routine { _routine(); pass("bug 132799"); -# [perl #132854] -# Goto the *first* parameter of a binary expression, which is harmless. -eval { - goto __GEN_2; - my $sent = do { - __GEN_2: +{ + # tests of __PACKAGE__ syntax: + # 2 tests moved from t/comp/package_block.t and modified to use inline + # package syntax + + $main::result = ""; + $main::warning = ""; + $SIG{__WARN__} = sub { $main::warning .= $_[0]; }; + eval q{ + $main::result .= "a(".__PACKAGE__."/".eval("__PACKAGE__").")"; + goto l0; + $main::result .= "b(".__PACKAGE__."/".eval("__PACKAGE__").")"; + + package Foo; + $main::result .= "c(".__PACKAGE__."/".eval("__PACKAGE__").")"; + l0: + $main::result .= "d(".__PACKAGE__."/".eval("__PACKAGE__").")"; + goto l1; + $main::result .= "e(".__PACKAGE__."/".eval("__PACKAGE__").")"; + + package main; + $main::result .= "f(".__PACKAGE__."/".eval("__PACKAGE__").")"; + l1: + $main::result .= "g(".__PACKAGE__."/".eval("__PACKAGE__").")"; + goto l2; + $main::result .= "h(".__PACKAGE__."/".eval("__PACKAGE__").")"; + + package Bar; + l2: + $main::result .= "i(".__PACKAGE__."/".eval("__PACKAGE__").")"; + + package main; + $main::result .= "j(".__PACKAGE__."/".eval("__PACKAGE__").")"; }; -}; -is $@,'', 'goto the first parameter of a binary expression [perl #132854]'; + my $expected = 'a(main/main)d(Foo/Foo)g(main/main)i(Bar/Bar)j(main/main)'; + is($main::result, $expected, "Got expected"); + ok(! $main::warning, "Jumping into labels in different packages ran without warnings"); +} # [GH #23806] { @@ -705,3 +556,161 @@ is $@,'', 'goto the first parameter of a binary expression [perl #132854]'; "goto LABEL can't be used to go into a construct that is optimized away"); } +note("Tests of functionality fatalized in Perl 5.44"); +my $msg = q|Use of "goto" to jump into a construct is no longer permitted|; + +{ + + local $@; + my $false = 0; + my $thisok = 0; + + eval { + for (my $p=1; $p && goto A; $p=0) { + A: $thisok = 1; + } + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: following goto and for(;;) loop'); + + eval { + no warnings 'void'; + \sub :lvalue { goto d; ${*{scalar(do { d: \*foo })}} }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into rv2sv, rv2gv and scalar'); + + eval { + sub { goto e; $#{; do { e: \@_ } } }->(1..7); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into $#{...}'); + + eval { + sub { goto f; prototype \&{; do { f: sub ($) {} } } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into srefgen, prototype and rv2cv'); + + eval { + sub { goto g; ref do { g: [] } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into ref'); + + eval { + sub { goto j; defined undef ${; do { j: \(my $foo = "foo") } } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into defined and undef'); + + eval { + sub { goto k; study ++${; do { k: \(my $foo = "foo") } } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into study and preincrement'); + + eval { + sub { goto l; ~-!${; do { l: \(my $foo = 0) } }++ }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into complement, not, negation and postincrement'); + + eval { + sub { goto n; sin cos exp log sqrt do { n: 1 } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into sin, cos, exp, log, and sqrt'); + + eval { + sub { goto o; srand do { o: 0 } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into srand'); + + eval { + sub { goto p; rand do { p: 1 } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into rand'); + + eval { + sub { goto r; chr ord length int hex oct abs do { r: -15.5 } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into chr, ord, length, int, hex, oct and abs'); + + eval { + sub { goto t; ucfirst lcfirst uc lc do { t: "q" } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into ucfirst, lcfirst, uc and lc'); + + eval { + sub { goto u; \@{; quotemeta do { u: "." } } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into rv2av and quotemeta'); + + eval { + no warnings 'void'; + join(" ",sub { goto v; %{; do { v: +{1..2} } } }->()); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into rv2hv'); + + eval { + no warnings 'void'; + join(" ",sub { goto w; $_ || do { w: "w" } }->()); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into rhs of or'); + + eval { + no warnings 'void'; + join(" ",sub { goto x; $_ && do { x: "w" } }->()); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into rhs of and'); + + eval { + no warnings 'void'; + join(" ",sub { goto z; $_ ? do { z: "w" } : 0 }->()); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into first leg of ?:'); + + eval { + no warnings 'void'; + join(" ",sub { goto z; $_ ? 0 : do { z: "w" } }->()); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into second leg of ?:'); + + eval { + sub { goto z; caller do { z: 0 } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into caller'); + + eval { + sub { goto z; exit do { z: return "foo" } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into exit'); + + eval { + sub { goto z; eval do { z: "'foo'" } }->(); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into eval'); + + eval { + no warnings 'void'; + join(",",sub { goto z; glob do { z: "foo bar" } }->()); + }; + like($@, qr/$msg/, + 'Got expected exception; formerly: goto into glob'); + +} + diff --git a/t/porting/deprecation.t b/t/porting/deprecation.t index 67f759e5c6c1..30c6aaf479e3 100644 --- a/t/porting/deprecation.t +++ b/t/porting/deprecation.t @@ -90,56 +90,3 @@ if (-e ".git") { "There should not be any new files which mention WARN_DEPRECATED"); } -# Test that deprecation warnings are produced under "use warnings" -# (set above) -{ - my $warning = "nada"; - local $SIG{__WARN__} = sub { $warning = $_[0] }; - my $count = 0; - while ($count<1) { - LABEL: $count++; - goto DONE if $count>1; - } - goto LABEL; - DONE: - like($warning, - qr/Use of "goto" to jump into a construct is deprecated, and will become fatal in Perl 5\.42/, - "Got expected deprecation warning"); -} -# Test that we can silence deprecation warnings with "no warnings 'deprecated'" -# as we used to. -{ - no warnings 'deprecated'; - my $warning = "nada"; - local $SIG{__WARN__} = sub { $warning = $_[0] }; - my $count = 0; - while ($count<1) { - LABEL: $count++; - goto DONE if $count>1; - } - goto LABEL; - DONE: - like($warning, qr/nada/, - "no warnings 'deprecated'; silenced deprecation warning as expected"); -} - -# Test that we can silence a specific deprecation warnings with "no warnings 'deprecated::$subcategory'" -# and that by doing so we don't silence any other deprecation warnings. -{ - no warnings 'deprecated::goto_construct'; - my $warning = "nada"; - local $SIG{__WARN__} = sub { $warning = $_[0] }; - my $count = 0; - while ($count<1) { - LABEL: $count++; - goto DONE if $count>1; - } - goto LABEL; - DONE: - like($warning, qr/nada/, - "no warnings 'deprecated::goto_construct'; silenced deprecation warning as expected"); - @INC = (); - do "regen.pl"; # this should produce a deprecation warning - like($warning, qr/is no longer in \@INC/, - "no warnings 'deprecated::goto_construct'; did not silence deprecated::dot_in_inc warnings"); -} diff --git a/t/uni/labels.t b/t/uni/labels.t index efae494fe252..ca8a72a98166 100644 --- a/t/uni/labels.t +++ b/t/uni/labels.t @@ -16,7 +16,7 @@ use feature qw 'unicode_strings evalbytes'; use charnames qw( :full ); -plan(10); +plan(11); LABEL: { pass("Sanity check, UTF-8 labels don't throw a syntax error."); @@ -47,10 +47,10 @@ SKIP: { eval "last E"; like $@, qr/Label not found for "last E" at/u, "last's error is UTF-8 clean"; - + eval "redo E"; like $@, qr/Label not found for "redo E" at/u, "redo's error is UTF-8 clean"; - + eval "next E"; like $@, qr/Label not found for "next E" at/u, "next's error is UTF-8 clean"; } @@ -75,12 +75,25 @@ like $@, qr/Unrecognized character/, "redo to downgradeable labels"; is $d, 0, "Latin-1 labels are reachable"; { - no warnings; - goto ここ; - - if (undef) { - ここ: { - pass("goto UTF-8 LABEL works."); + local $@; + eval { + goto ここ; + + if (undef) { + ここ: { + my $x = "jump goto UTF-8 LABEL no longer works"; + } } + }; + like($@, + qr/Use of "goto" to jump into a construct is no longer permitted/, + "Got expected error message"); +} + +{ + goto ここ; + + ここ: { + pass("UTF-8 labels are still valid, but you can no longer jump into a construct"); } } diff --git a/warnings.h b/warnings.h index 161d0028c089..31f5eaedf05c 100644 --- a/warnings.h +++ b/warnings.h @@ -82,94 +82,93 @@ /* Warnings Categories added in Perl 5.011003 */ -#define WARN_DEPRECATED__GOTO_CONSTRUCT 48 -#define WARN_DEPRECATED__UNICODE_PROPERTY_NAME 49 +#define WARN_DEPRECATED__UNICODE_PROPERTY_NAME 48 /* Warnings Categories added in Perl 5.013 */ -#define WARN_NON_UNICODE 50 -#define WARN_NONCHAR 51 -#define WARN_SURROGATE 52 +#define WARN_NON_UNICODE 49 +#define WARN_NONCHAR 50 +#define WARN_SURROGATE 51 /* Warnings Categories added in Perl 5.017 */ -#define WARN_EXPERIMENTAL 53 -#define WARN_EXPERIMENTAL__REGEX_SETS 54 +#define WARN_EXPERIMENTAL 52 +#define WARN_EXPERIMENTAL__REGEX_SETS 53 /* Warnings Categories added in Perl 5.019 */ -#define WARN_SYSCALLS 55 +#define WARN_SYSCALLS 54 /* Warnings Categories added in Perl 5.021 */ -#define WARN_EXPERIMENTAL__RE_STRICT 56 -#define WARN_EXPERIMENTAL__REFALIASING 57 -#define WARN_LOCALE 58 -#define WARN_MISSING 59 -#define WARN_REDUNDANT 60 +#define WARN_EXPERIMENTAL__RE_STRICT 55 +#define WARN_EXPERIMENTAL__REFALIASING 56 +#define WARN_LOCALE 57 +#define WARN_MISSING 58 +#define WARN_REDUNDANT 59 /* Warnings Categories added in Perl 5.025 */ -#define WARN_EXPERIMENTAL__DECLARED_REFS 61 +#define WARN_EXPERIMENTAL__DECLARED_REFS 60 /* Warnings Categories added in Perl 5.025011 */ -#define WARN_DEPRECATED__DOT_IN_INC 62 +#define WARN_DEPRECATED__DOT_IN_INC 61 /* Warnings Categories added in Perl 5.027 */ -#define WARN_SHADOW 63 +#define WARN_SHADOW 62 /* Warnings Categories added in Perl 5.029 */ -#define WARN_EXPERIMENTAL__PRIVATE_USE 64 -#define WARN_EXPERIMENTAL__UNIPROP_WILDCARDS 65 -#define WARN_EXPERIMENTAL__VLB 66 +#define WARN_EXPERIMENTAL__PRIVATE_USE 63 +#define WARN_EXPERIMENTAL__UNIPROP_WILDCARDS 64 +#define WARN_EXPERIMENTAL__VLB 65 /* Warnings Categories added in Perl 5.033 */ -#define WARN_EXPERIMENTAL__TRY 67 +#define WARN_EXPERIMENTAL__TRY 66 /* Warnings Categories added in Perl 5.035 */ -#define WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES 68 -#define WARN_EXPERIMENTAL__BUILTIN 69 -#define WARN_EXPERIMENTAL__DEFER 70 -#define WARN_EXPERIMENTAL__EXTRA_PAIRED_DELIMITERS 71 -#define WARN_SCALAR 72 +#define WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES 67 +#define WARN_EXPERIMENTAL__BUILTIN 68 +#define WARN_EXPERIMENTAL__DEFER 69 +#define WARN_EXPERIMENTAL__EXTRA_PAIRED_DELIMITERS 70 +#define WARN_SCALAR 71 /* Warnings Categories added in Perl 5.035009 */ -#define WARN_DEPRECATED__VERSION_DOWNGRADE 73 +#define WARN_DEPRECATED__VERSION_DOWNGRADE 72 /* Warnings Categories added in Perl 5.03501 */ -#define WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED 74 +#define WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED 73 /* Warnings Categories added in Perl 5.037 */ -#define WARN_EXPERIMENTAL__CLASS 75 +#define WARN_EXPERIMENTAL__CLASS 74 /* Warnings Categories added in Perl 5.039002 */ -#define WARN_DEPRECATED__MISSING_IMPORT_CALLED_WITH_ARGS 76 +#define WARN_DEPRECATED__MISSING_IMPORT_CALLED_WITH_ARGS 75 /* Warnings Categories added in Perl 5.039008 */ -#define WARN_DEPRECATED__SUBSEQUENT_USE_VERSION 77 +#define WARN_DEPRECATED__SUBSEQUENT_USE_VERSION 76 /* Warnings Categories added in Perl 5.041 */ -#define WARN_EXPERIMENTAL__KEYWORD_ALL 78 -#define WARN_EXPERIMENTAL__KEYWORD_ANY 79 +#define WARN_EXPERIMENTAL__KEYWORD_ALL 77 +#define WARN_EXPERIMENTAL__KEYWORD_ANY 78 /* Warnings Categories added in Perl 5.043 */ -#define WARN_EXPERIMENTAL__SIGNATURE_NAMED_PARAMETERS 80 -#define WARNsize 21 -#define WARN_ALLstring "\125\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\0" -#define WARN_DEFAULTstring "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x05\x00\x15\x14\x55\x55\x54\x55\x01" +#define WARN_EXPERIMENTAL__SIGNATURE_NAMED_PARAMETERS 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" +#define WARN_DEFAULTstring "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x01\x40\x05\x45\x55\x15\x55\x55" #define isLEXWARN_on \ cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD) @@ -329,7 +328,6 @@ category parameters passed. =for apidoc Amnh||WARN_VOID =for apidoc Amnh||WARN_IMPRECISION =for apidoc Amnh||WARN_ILLEGALPROTO -=for apidoc Amnh||WARN_DEPRECATED__GOTO_CONSTRUCT =for apidoc Amnh||WARN_DEPRECATED__UNICODE_PROPERTY_NAME =for apidoc Amnh||WARN_NON_UNICODE =for apidoc Amnh||WARN_NONCHAR