summaryrefslogtreecommitdiff
path: root/regen
diff options
context:
space:
mode:
authorRicardo Signes <rjbs@cpan.org>2014-03-14 08:45:06 +0100
committerRicardo Signes <rjbs@cpan.org>2014-03-18 13:22:34 -0400
commitc4a853d1b01931da84f63496654de44a9f03e103 (patch)
treeaf01e7c270c31c614b7b4da8283cf15d7f656741 /regen
parent4e75700d82cf54133ceb54bd6ea7b4e136b99beb (diff)
downloadperl-c4a853d1b01931da84f63496654de44a9f03e103.tar.gz
enclose warnings.h generation in a block
...to limit the number of variables visible everywhere and make it a bit easier to see what I am doing as I refactor regen/warnings.pl
Diffstat (limited to 'regen')
-rw-r--r--regen/warnings.pl85
1 files changed, 45 insertions, 40 deletions
diff --git a/regen/warnings.pl b/regen/warnings.pl
index 29033ab53e..e36da7c993 100644
--- a/regen/warnings.pl
+++ b/regen/warnings.pl
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-#
+#
# Regenerate (overwriting only if changed):
#
# lib/warnings.pm
@@ -33,7 +33,7 @@ sub DEFAULT_OFF () { 2 }
my $tree = {
'all' => [ 5.008, {
- 'io' => [ 5.008, {
+ 'io' => [ 5.008, {
'pipe' => [ 5.008, DEFAULT_OFF],
'unopened' => [ 5.008, DEFAULT_OFF],
'closed' => [ 5.008, DEFAULT_OFF],
@@ -42,7 +42,7 @@ my $tree = {
'layer' => [ 5.008, DEFAULT_OFF],
'syscalls' => [ 5.019, DEFAULT_OFF],
}],
- 'syntax' => [ 5.008, {
+ 'syntax' => [ 5.008, {
'ambiguous' => [ 5.008, DEFAULT_OFF],
'semicolon' => [ 5.008, DEFAULT_OFF],
'precedence' => [ 5.008, DEFAULT_OFF],
@@ -55,7 +55,7 @@ my $tree = {
'qw' => [ 5.008, DEFAULT_OFF],
'illegalproto' => [ 5.011, DEFAULT_OFF],
}],
- 'severe' => [ 5.008, {
+ 'severe' => [ 5.008, {
'inplace' => [ 5.008, DEFAULT_ON],
'internal' => [ 5.008, DEFAULT_OFF],
'debugging' => [ 5.008, DEFAULT_ON],
@@ -131,7 +131,7 @@ sub valueWalk
my ($ver, $rest) = @{ $v } ;
push @{ $v_list{$ver} }, $k;
-
+
if (ref $rest)
{ valueWalk ($rest) }
@@ -168,7 +168,7 @@ sub walk
push @{ $list{$k} }, $NameToValue{uc $k} ;
die "Value associated with key '$k' is not an ARRAY reference"
if !ref $v || ref $v ne 'ARRAY' ;
-
+
my ($ver, $rest) = @{ $v } ;
if (ref $rest)
{ push (@{ $list{$k} }, walk ($rest)) }
@@ -215,7 +215,7 @@ sub printTree
$v = $tre->{$k};
die "Value associated with key '$k' is not an ARRAY reference"
if !ref $v || ref $v ne 'ARRAY' ;
-
+
my $offset ;
if ($tre ne $tree) {
print $prefix . "|\n" ;
@@ -287,7 +287,12 @@ my ($warn, $pm) = map {
open_new($_, '>', { by => 'regen/warnings.pl' });
} 'warnings.h', 'lib/warnings.pm';
-print $warn <<'EOM';
+my ($index, $warn_size);
+
+{
+ # generate warnings.h
+
+ print $warn <<'EOM';
#define Off(x) ((x) / 8)
#define Bit(x) (1 << ((x) % 8))
@@ -312,39 +317,38 @@ print $warn <<'EOM';
#define PERL_WARNHOOK_FATAL (&PL_sv_placeholder)
EOM
-my $offset = 0 ;
+ my $offset = 0 ;
-valueWalk ($tree) ;
-my $index = orderValues();
+ valueWalk ($tree) ;
+ $index = orderValues();
-die <<EOM if $index > 255 ;
+ die <<EOM if $index > 255 ;
Too many warnings categories -- max is 255
- rewrite packWARN* & unpackWARN* macros
+ rewrite packWARN* & unpackWARN* macros
EOM
-walk ($tree) ;
+ walk ($tree) ;
-$index *= 2 ;
-my $warn_size = int($index / 8) + ($index % 8 != 0) ;
+ $index *= 2 ;
+ $warn_size = int($index / 8) + ($index % 8 != 0) ;
-my $k ;
-my $last_ver = 0;
-foreach $k (sort { $a <=> $b } keys %ValueToName) {
- my ($name, $version) = @{ $ValueToName{$k} };
- print $warn "\n/* Warnings Categories added in Perl $version */\n\n"
- if $last_ver != $version ;
- $name =~ y/:/_/;
- print $warn tab(5, "#define WARN_$name"), " $k\n" ;
- $last_ver = $version ;
-}
-print $warn "\n" ;
+ my $k ;
+ my $last_ver = 0;
+ foreach $k (sort { $a <=> $b } keys %ValueToName) {
+ my ($name, $version) = @{ $ValueToName{$k} };
+ print $warn "\n/* Warnings Categories added in Perl $version */\n\n"
+ if $last_ver != $version ;
+ $name =~ y/:/_/;
+ print $warn tab(5, "#define WARN_$name"), " $k\n" ;
+ $last_ver = $version ;
+ }
+ print $warn "\n" ;
-print $warn tab(5, '#define WARNsize'), "$warn_size\n" ;
-#print WARN tab(5, '#define WARN_ALLstring'), '"', ('\377' x $warn_size) , "\"\n" ;
-print $warn tab(5, '#define WARN_ALLstring'), '"', ('\125' x $warn_size) , "\"\n" ;
-print $warn tab(5, '#define WARN_NONEstring'), '"', ('\0' x $warn_size) , "\"\n" ;
+ print $warn tab(5, '#define WARNsize'), "$warn_size\n" ;
+ print $warn tab(5, '#define WARN_ALLstring'), '"', ('\125' x $warn_size) , "\"\n" ;
+ print $warn tab(5, '#define WARN_NONEstring'), '"', ('\0' x $warn_size) , "\"\n" ;
-print $warn <<'EOM';
+ print $warn <<'EOM';
#define isLEXWARN_on (PL_curcop->cop_warnings != pWARN_STD)
#define isLEXWARN_off (PL_curcop->cop_warnings == pWARN_STD)
@@ -398,14 +402,15 @@ print $warn <<'EOM';
/* end of file warnings.h */
EOM
-read_only_bottom_close_and_rename($warn);
+ read_only_bottom_close_and_rename($warn);
+}
while (<DATA>) {
last if /^KEYWORDS$/ ;
print $pm $_ ;
}
-$last_ver = 0;
+my $last_ver = 0;
print $pm "our %Offsets = (\n" ;
foreach my $k (sort { $a <=> $b } keys %ValueToName) {
my ($name, $version) = @{ $ValueToName{$k} };
@@ -423,7 +428,7 @@ foreach my $k (sort { $a <=> $b } keys %ValueToName) {
print $pm " );\n\n" ;
print $pm "our %Bits = (\n" ;
-foreach $k (sort keys %list) {
+foreach my $k (sort keys %list) {
my $v = $list{$k} ;
my @list = sort { $a <=> $b } @$v ;
@@ -436,7 +441,7 @@ foreach $k (sort keys %list) {
print $pm " );\n\n" ;
print $pm "our %DeadBits = (\n" ;
-foreach $k (sort keys %list) {
+foreach my $k (sort keys %list) {
my $v = $list{$k} ;
my @list = sort { $a <=> $b } @$v ;
@@ -685,7 +690,7 @@ sub bits
return _bits(undef, @_) ;
}
-sub import
+sub import
{
shift;
@@ -698,12 +703,12 @@ sub import
# append 'all' when implied (after a lone "FATAL" or "NONFATAL")
push @_, 'all' if @_==1 && ( $_[0] eq 'FATAL' || $_[0] eq 'NONFATAL' );
-
+
# Empty @_ is equivalent to @_ = 'all' ;
${^WARNING_BITS} = @_ ? _bits($mask, @_) : $mask | $Bits{all} ;
}
-sub unimport
+sub unimport
{
shift;
@@ -720,7 +725,7 @@ sub unimport
foreach my $word ( @_ ) {
if ($word eq 'FATAL') {
- next;
+ next;
}
elsif ($catmask = $Bits{$word}) {
$mask &= ~($catmask | $DeadBits{$word} | $All);