mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
Call check_keywords.pl in maintainer-check
For that purpose, have check_keywords.pl print errors to stderr and return a useful exit status.
This commit is contained in:
parent
1b630751d0
commit
9bf8603c7a
@ -45,4 +45,4 @@ clean: clean-local
|
|||||||
clean-local:
|
clean-local:
|
||||||
rm -f $(subsysfilename) $(OBJS)
|
rm -f $(subsysfilename) $(OBJS)
|
||||||
|
|
||||||
$(call recurse,coverage)
|
$(call recurse,coverage maintainer-check)
|
||||||
|
@ -65,3 +65,7 @@ gram.o keywords.o parser.o: gram.h
|
|||||||
# are not cleaned here.
|
# are not cleaned here.
|
||||||
clean distclean maintainer-clean:
|
clean distclean maintainer-clean:
|
||||||
rm -f lex.backup
|
rm -f lex.backup
|
||||||
|
|
||||||
|
|
||||||
|
maintainer-check:
|
||||||
|
$(PERL) $(top_srcdir)/src/tools/check_keywords.pl $(top_srcdir)
|
||||||
|
@ -7,8 +7,14 @@ use strict;
|
|||||||
#
|
#
|
||||||
# src/tools/check_keywords.pl
|
# src/tools/check_keywords.pl
|
||||||
|
|
||||||
|
my $errors = 0;
|
||||||
my $path;
|
my $path;
|
||||||
|
|
||||||
|
sub error(@) {
|
||||||
|
print STDERR @_;
|
||||||
|
$errors = 1;
|
||||||
|
}
|
||||||
|
|
||||||
if (@ARGV) {
|
if (@ARGV) {
|
||||||
$path = $ARGV[0];
|
$path = $ARGV[0];
|
||||||
shift @ARGV;
|
shift @ARGV;
|
||||||
@ -102,7 +108,8 @@ foreach $kcat (keys %keyword_categories) {
|
|||||||
$bare_kword = $kword;
|
$bare_kword = $kword;
|
||||||
$bare_kword =~ s/_P$//;
|
$bare_kword =~ s/_P$//;
|
||||||
if ($bare_kword le $prevkword) {
|
if ($bare_kword le $prevkword) {
|
||||||
print "'$bare_kword' after '$prevkword' in $kcat list is misplaced";
|
error "'$bare_kword' after '$prevkword' in $kcat list is misplaced";
|
||||||
|
$errors = 1;
|
||||||
}
|
}
|
||||||
$prevkword = $bare_kword;
|
$prevkword = $bare_kword;
|
||||||
}
|
}
|
||||||
@ -141,35 +148,35 @@ kwlist_line: while (<KWLIST>) {
|
|||||||
|
|
||||||
# Check that the list is in alphabetical order
|
# Check that the list is in alphabetical order
|
||||||
if ($kwstring le $prevkwstring) {
|
if ($kwstring le $prevkwstring) {
|
||||||
print "'$kwstring' after '$prevkwstring' in kwlist.h is misplaced";
|
error "'$kwstring' after '$prevkwstring' in kwlist.h is misplaced";
|
||||||
}
|
}
|
||||||
$prevkwstring = $kwstring;
|
$prevkwstring = $kwstring;
|
||||||
|
|
||||||
# Check that the keyword string is valid: all lower-case ASCII chars
|
# Check that the keyword string is valid: all lower-case ASCII chars
|
||||||
if ($kwstring !~ /^[a-z_]*$/) {
|
if ($kwstring !~ /^[a-z_]*$/) {
|
||||||
print "'$kwstring' is not a valid keyword string, must be all lower-case ASCII chars";
|
error "'$kwstring' is not a valid keyword string, must be all lower-case ASCII chars";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check that the keyword name is valid: all upper-case ASCII chars
|
# Check that the keyword name is valid: all upper-case ASCII chars
|
||||||
if ($kwname !~ /^[A-Z_]*$/) {
|
if ($kwname !~ /^[A-Z_]*$/) {
|
||||||
print "'$kwname' is not a valid keyword name, must be all upper-case ASCII chars";
|
error "'$kwname' is not a valid keyword name, must be all upper-case ASCII chars";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check that the keyword string matches keyword name
|
# Check that the keyword string matches keyword name
|
||||||
$bare_kwname = $kwname;
|
$bare_kwname = $kwname;
|
||||||
$bare_kwname =~ s/_P$//;
|
$bare_kwname =~ s/_P$//;
|
||||||
if ($bare_kwname ne uc($kwstring)) {
|
if ($bare_kwname ne uc($kwstring)) {
|
||||||
print "keyword name '$kwname' doesn't match keyword string '$kwstring'";
|
error "keyword name '$kwname' doesn't match keyword string '$kwstring'";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check that the keyword is present in the grammar
|
# Check that the keyword is present in the grammar
|
||||||
%kwhash = %{$kwhashes{$kwcat_id}};
|
%kwhash = %{$kwhashes{$kwcat_id}};
|
||||||
|
|
||||||
if (!(%kwhash)) {
|
if (!(%kwhash)) {
|
||||||
#print "Unknown kwcat_id: $kwcat_id";
|
#error "Unknown kwcat_id: $kwcat_id";
|
||||||
} else {
|
} else {
|
||||||
if (!($kwhash{$kwname})) {
|
if (!($kwhash{$kwname})) {
|
||||||
print "'$kwname' not present in $kwcat_id section of gram.y";
|
error "'$kwname' not present in $kwcat_id section of gram.y";
|
||||||
} else {
|
} else {
|
||||||
# Remove it from the hash, so that we can complain at the end
|
# Remove it from the hash, so that we can complain at the end
|
||||||
# if there's keywords left that were not found in kwlist.h
|
# if there's keywords left that were not found in kwlist.h
|
||||||
@ -185,6 +192,8 @@ while ( my ($kwcat, $kwcat_id) = each(%keyword_categories) ) {
|
|||||||
%kwhash = %{$kwhashes{$kwcat_id}};
|
%kwhash = %{$kwhashes{$kwcat_id}};
|
||||||
|
|
||||||
for my $kw ( keys %kwhash ) {
|
for my $kw ( keys %kwhash ) {
|
||||||
print "'$kw' found in gram.y $kwcat category, but not in kwlist.h"
|
error "'$kw' found in gram.y $kwcat category, but not in kwlist.h"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exit $errors;
|
||||||
|
Loading…
Reference in New Issue
Block a user