summaryrefslogtreecommitdiff
path: root/regen/warnings.pl
diff options
context:
space:
mode:
authorYves Orton <demerphq@gmail.com>2023-03-08 22:22:17 +0100
committerYves Orton <demerphq@gmail.com>2023-03-18 21:00:54 +0800
commit0144c00009c239ba048250dbe197d198453adc06 (patch)
tree7d2a7f46286cf1abaa247f5337b746037705feae /regen/warnings.pl
parentb3adc681f4ed86f8c921ec9d0dce3456c4c15301 (diff)
downloadperl-0144c00009c239ba048250dbe197d198453adc06.tar.gz
t/porting/deprecation.t - add tests for deprecation documentation and categories
Diffstat (limited to 'regen/warnings.pl')
-rw-r--r--regen/warnings.pl226
1 files changed, 114 insertions, 112 deletions
diff --git a/regen/warnings.pl b/regen/warnings.pl
index 1d1aa1de66..4b598bbc31 100644
--- a/regen/warnings.pl
+++ b/regen/warnings.pl
@@ -5,13 +5,13 @@
# lib/warnings.pm
# warnings.h
#
-# from information hardcoded into this script (the $TREE hash), plus the
+# from information hardcoded into this script (the $WARNING_TREE hash), plus the
# template for warnings.pm in the DATA section.
#
# When changing the number of warnings, t/op/caller.t should change to
# correspond with the value of $BYTES in lib/warnings.pm
#
-# With an argument of 'tree', just dump the contents of $TREE and exits.
+# With an argument of 'tree', just dump the contents of $WARNING_TREE and exits.
# Also accepts the standard regen_lib -q and -v args.
#
# This script is normally invoked from regen.pl.
@@ -44,7 +44,7 @@ sub DEFAULT_OFF () { 2 }
# created. But the warnings category 'io' WILL include all the mask bits
# necessary to turn on 'pipe', 'unopened' etc.
-my $TREE = {
+our $WARNING_TREE = {
'all' => [ 5.008, {
'io' => [ 5.008, {
'pipe' => [ 5.008, DEFAULT_OFF],
@@ -334,7 +334,7 @@ sub warningsTree
if !ref $v || ref $v ne 'ARRAY' ;
my $offset ;
- if ($tree ne $TREE) {
+ if ($tree ne $WARNING_TREE) {
$rv .= $prefix . "|\n" ;
$rv .= $prefix . "+- $k" ;
$offset = ' ' x ($max + 4) ;
@@ -404,149 +404,151 @@ sub mkOct
###########################################################################
+sub main {
-if (@ARGV && $ARGV[0] eq "tree")
-{
- print warningsTree($TREE, " ") ;
- exit ;
-}
-
-my ($warn_h, $warn_pm) = map {
- open_new($_, '>', { by => 'regen/warnings.pl' });
-} 'warnings.h', 'lib/warnings.pm';
+ if (@ARGV && $ARGV[0] eq "tree")
+ {
+ print warningsTree($WARNING_TREE, " ") ;
+ exit ;
+ }
-my ($index, $warn_size);
+ my ($warn_h, $warn_pm) = map {
+ open_new($_, '>', { by => 'regen/warnings.pl' });
+ } 'warnings.h', 'lib/warnings.pm';
-# generate warnings.h
+ my ($index, $warn_size);
-print $warn_h warnings_h_boilerplate_1();
+ # generate warnings.h
-$index = orderValues($TREE);
+ print $warn_h warnings_h_boilerplate_1();
-die <<EOM if $index > 255 ;
-Too many warnings categories -- max is 255
-rewrite packWARN* & unpackWARN* macros
-EOM
+ $index = orderValues($WARNING_TREE);
-walk ($TREE) ;
-for (my $i = $index; $i & 3; $i++) {
- push @{$CATEGORIES{all}}, $i;
-}
+ die <<~EOM if $index > 255 ;
+ Too many warnings categories -- max is 255
+ rewrite packWARN* & unpackWARN* macros
+ EOM
-$index *= 2 ;
-$warn_size = int($index / 8) + ($index % 8 != 0) ;
-
-my $k ;
-my $last_ver = 0;
-my @names;
-foreach $k (sort { $a <=> $b } keys %VALUE_TO_NAME) {
- my ($name, $version) = @{ $VALUE_TO_NAME{$k} };
- print $warn_h "\n/* Warnings Categories added in Perl $version */\n\n"
- if $last_ver != $version ;
- $name =~ y/:/_/;
- $name = "WARN_$name";
- print $warn_h tab(6, "#define $name"), " $k\n" ;
- push @names, $name;
- $last_ver = $version ;
-}
+ walk ($WARNING_TREE) ;
+ for (my $i = $index; $i & 3; $i++) {
+ push @{$CATEGORIES{all}}, $i;
+ }
-print $warn_h tab(6, '#define WARNsize'), " $warn_size\n" ;
-print $warn_h tab(6, '#define WARN_ALLstring'), ' "', ('\125' x $warn_size) , "\"\n" ;
-print $warn_h tab(6, '#define WARN_NONEstring'), ' "', ('\0' x $warn_size) , "\"\n" ;
+ $index *= 2 ;
+ $warn_size = int($index / 8) + ($index % 8 != 0) ;
+
+ my $k ;
+ my $last_ver = 0;
+ my @names;
+ foreach $k (sort { $a <=> $b } keys %VALUE_TO_NAME) {
+ my ($name, $version) = @{ $VALUE_TO_NAME{$k} };
+ print $warn_h "\n/* Warnings Categories added in Perl $version */\n\n"
+ if $last_ver != $version ;
+ $name =~ y/:/_/;
+ $name = "WARN_$name";
+ print $warn_h tab(6, "#define $name"), " $k\n" ;
+ push @names, $name;
+ $last_ver = $version ;
+ }
-print $warn_h warnings_h_boilerplate_2();
+ print $warn_h tab(6, '#define WARNsize'), " $warn_size\n" ;
+ print $warn_h tab(6, '#define WARN_ALLstring'), ' "', ('\125' x $warn_size) , "\"\n" ;
+ print $warn_h tab(6, '#define WARN_NONEstring'), ' "', ('\0' x $warn_size) , "\"\n" ;
-print $warn_h "\n\n/*\n" ;
-print $warn_h map { "=for apidoc Amnh||$_\n" } @names;
-print $warn_h "\n=cut\n*/\n\n" ;
-print $warn_h "/* end of file warnings.h */\n";
+ print $warn_h warnings_h_boilerplate_2();
-read_only_bottom_close_and_rename($warn_h);
+ print $warn_h "\n\n/*\n" ;
+ print $warn_h map { "=for apidoc Amnh||$_\n" } @names;
+ print $warn_h "\n=cut\n*/\n\n" ;
+ print $warn_h "/* end of file warnings.h */\n";
+ read_only_bottom_close_and_rename($warn_h);
-# generate warnings.pm
-while (<DATA>) {
- last if /^VERSION$/ ;
- print $warn_pm $_ ;
-}
+ # generate warnings.pm
-print $warn_pm qq(our \$VERSION = "$::VERSION";\n);
+ while (<DATA>) {
+ last if /^VERSION$/ ;
+ print $warn_pm $_ ;
+ }
-while (<DATA>) {
- last if /^KEYWORDS$/ ;
- print $warn_pm $_ ;
-}
+ print $warn_pm qq(our \$VERSION = "$::VERSION";\n);
-$last_ver = 0;
-print $warn_pm "our %Offsets = (" ;
-foreach my $k (sort { $a <=> $b } keys %VALUE_TO_NAME) {
- my ($name, $version) = @{ $VALUE_TO_NAME{$k} };
- $name = lc $name;
- $k *= 2 ;
- if ( $last_ver != $version ) {
- print $warn_pm "\n";
- print $warn_pm tab(6, " # Warnings Categories added in Perl $version");
- print $warn_pm "\n";
+ while (<DATA>) {
+ last if /^KEYWORDS$/ ;
+ print $warn_pm $_ ;
}
- print $warn_pm tab(6, " '$name'"), "=> $k,\n" ;
- $last_ver = $version;
-}
-print $warn_pm ");\n\n" ;
+ $last_ver = 0;
+ print $warn_pm "our %Offsets = (" ;
+ foreach my $k (sort { $a <=> $b } keys %VALUE_TO_NAME) {
+ my ($name, $version) = @{ $VALUE_TO_NAME{$k} };
+ $name = lc $name;
+ $k *= 2 ;
+ if ( $last_ver != $version ) {
+ print $warn_pm "\n";
+ print $warn_pm tab(6, " # Warnings Categories added in Perl $version");
+ print $warn_pm "\n";
+ }
+ print $warn_pm tab(6, " '$name'"), "=> $k,\n" ;
+ $last_ver = $version;
+ }
-print $warn_pm "our %Bits = (\n" ;
-foreach my $k (sort keys %CATEGORIES) {
+ print $warn_pm ");\n\n" ;
- my $v = $CATEGORIES{$k} ;
- my @list = sort { $a <=> $b } @$v ;
+ print $warn_pm "our %Bits = (\n" ;
+ foreach my $k (sort keys %CATEGORIES) {
- print $warn_pm tab(6, " '$k'"), '=> "',
- mkHex($warn_size, map $_ * 2 , @list),
- '", # [', mkRange(@list), "]\n" ;
-}
+ my $v = $CATEGORIES{$k} ;
+ my @list = sort { $a <=> $b } @$v ;
-print $warn_pm ");\n\n" ;
+ print $warn_pm tab(6, " '$k'"), '=> "',
+ mkHex($warn_size, map $_ * 2 , @list),
+ '", # [', mkRange(@list), "]\n" ;
+ }
-print $warn_pm "our %DeadBits = (\n" ;
-foreach my $k (sort keys %CATEGORIES) {
+ print $warn_pm ");\n\n" ;
- my $v = $CATEGORIES{$k} ;
- my @list = sort { $a <=> $b } @$v ;
+ print $warn_pm "our %DeadBits = (\n" ;
+ foreach my $k (sort keys %CATEGORIES) {
- print $warn_pm tab(6, " '$k'"), '=> "',
- mkHex($warn_size, map $_ * 2 + 1 , @list),
- '", # [', mkRange(@list), "]\n" ;
-}
+ my $v = $CATEGORIES{$k} ;
+ my @list = sort { $a <=> $b } @$v ;
-print $warn_pm ");\n\n" ;
+ print $warn_pm tab(6, " '$k'"), '=> "',
+ mkHex($warn_size, map $_ * 2 + 1 , @list),
+ '", # [', mkRange(@list), "]\n" ;
+ }
-print $warn_pm "our %NoOp = (\n" ;
-foreach my $k ( grep /\A[a-z:_]+\z/, sort keys %NO_BIT_FOR ) {
- print $warn_pm tab(6, " '$k'"), "=> 1,\n";
-}
+ print $warn_pm ");\n\n" ;
-print $warn_pm ");\n\n" ;
-print $warn_pm "# These are used by various things, including our own tests\n";
-print $warn_pm tab(6, 'our $NONE'), '= "', ('\0' x $warn_size) , "\";\n" ;
-print $warn_pm tab(6, 'our $DEFAULT'), '= "',
- mkHex($warn_size, map $_ * 2, @DEFAULTS),
- '"; # [', mkRange(sort { $a <=> $b } @DEFAULTS), "]\n" ;
-print $warn_pm tab(6, 'our $LAST_BIT'), '= ' . "$index ;\n" ;
-print $warn_pm tab(6, 'our $BYTES'), '= ' . "$warn_size ;\n" ;
-while (<DATA>) {
- if ($_ eq "=for warnings.pl tree-goes-here\n") {
- print $warn_pm warningsTree($TREE, " ");
- next;
+ print $warn_pm "our %NoOp = (\n" ;
+ foreach my $k ( grep /\A[a-z:_]+\z/, sort keys %NO_BIT_FOR ) {
+ print $warn_pm tab(6, " '$k'"), "=> 1,\n";
}
- print $warn_pm $_ ;
-}
-read_only_bottom_close_and_rename($warn_pm);
+ print $warn_pm ");\n\n" ;
+ print $warn_pm "# These are used by various things, including our own tests\n";
+ print $warn_pm tab(6, 'our $NONE'), '= "', ('\0' x $warn_size) , "\";\n" ;
+ print $warn_pm tab(6, 'our $DEFAULT'), '= "',
+ mkHex($warn_size, map $_ * 2, @DEFAULTS),
+ '"; # [', mkRange(sort { $a <=> $b } @DEFAULTS), "]\n" ;
+ print $warn_pm tab(6, 'our $LAST_BIT'), '= ' . "$index ;\n" ;
+ print $warn_pm tab(6, 'our $BYTES'), '= ' . "$warn_size ;\n" ;
+ while (<DATA>) {
+ if ($_ eq "=for warnings.pl tree-goes-here\n") {
+ print $warn_pm warningsTree($WARNING_TREE, " ");
+ next;
+ }
+ print $warn_pm $_ ;
+ }
-exit(0);
+ read_only_bottom_close_and_rename($warn_pm);
+ exit(0);
+}
+main() unless caller();
# -----------------------------------------------------------------
sub warnings_h_boilerplate_1 { return <<'EOM'; }