aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/kernel-doc
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2017-09-19 07:08:13 -0400
committerJonathan Corbet <corbet@lwn.net>2017-09-26 17:02:54 -0400
commit5cb5c31cdf246099f7d48a57f448b05b7941cd6a (patch)
tree70a91091bfb4b7893909710ed2c7b99ebb0b64e8 /scripts/kernel-doc
parent8a29896a6e31c7aa2ca3b50d8aefe05f280b0b7e (diff)
scripts/kernel-doc: warn on excess enum value descriptions
The existing message "Excess struct/union/enum/typedef member [...]" made it sound like this would already be done, but the code is never invoked for enums or typedefs (and really can't be). Add some code to the enum dumper to handle this there instead. While at it, also make the above message more accurate by simply dumping the type that was passed in, and pass the struct/union differentiation in. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Jonathan Corbet <corbet@lwn.net>
Diffstat (limited to 'scripts/kernel-doc')
-rwxr-xr-xscripts/kernel-doc17
1 files changed, 13 insertions, 4 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc
index 9d3eafea58f0..67d051edd615 100755
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -2168,7 +2168,7 @@ sub dump_struct($$) {
2168 my $nested; 2168 my $nested;
2169 2169
2170 if ($x =~ /(struct|union)\s+(\w+)\s*{(.*)}/) { 2170 if ($x =~ /(struct|union)\s+(\w+)\s*{(.*)}/) {
2171 #my $decl_type = $1; 2171 my $decl_type = $1;
2172 $declaration_name = $2; 2172 $declaration_name = $2;
2173 my $members = $3; 2173 my $members = $3;
2174 2174
@@ -2194,7 +2194,7 @@ sub dump_struct($$) {
2194 $members =~ s/DECLARE_HASHTABLE\s*\(([^,)]+), ([^,)]+)\)/unsigned long $1\[1 << (($2) - 1)\]/gos; 2194 $members =~ s/DECLARE_HASHTABLE\s*\(([^,)]+), ([^,)]+)\)/unsigned long $1\[1 << (($2) - 1)\]/gos;
2195 2195
2196 create_parameterlist($members, ';', $file); 2196 create_parameterlist($members, ';', $file);
2197 check_sections($file, $declaration_name, "struct", $sectcheck, $struct_actual, $nested); 2197 check_sections($file, $declaration_name, $decl_type, $sectcheck, $struct_actual, $nested);
2198 2198
2199 output_declaration($declaration_name, 2199 output_declaration($declaration_name,
2200 'struct', 2200 'struct',
@@ -2226,6 +2226,8 @@ sub dump_enum($$) {
2226 if ($x =~ /enum\s+(\w+)\s*{(.*)}/) { 2226 if ($x =~ /enum\s+(\w+)\s*{(.*)}/) {
2227 $declaration_name = $1; 2227 $declaration_name = $1;
2228 my $members = $2; 2228 my $members = $2;
2229 my %_members;
2230
2229 $members =~ s/\s+$//; 2231 $members =~ s/\s+$//;
2230 2232
2231 foreach my $arg (split ',', $members) { 2233 foreach my $arg (split ',', $members) {
@@ -2236,9 +2238,16 @@ sub dump_enum($$) {
2236 print STDERR "${file}:$.: warning: Enum value '$arg' ". 2238 print STDERR "${file}:$.: warning: Enum value '$arg' ".
2237 "not described in enum '$declaration_name'\n"; 2239 "not described in enum '$declaration_name'\n";
2238 } 2240 }
2239 2241 $_members{$arg} = 1;
2240 } 2242 }
2241 2243
2244 while (my ($k, $v) = each %parameterdescs) {
2245 if (!exists($_members{$k})) {
2246 print STDERR "${file}:$.: warning: Excess enum value " .
2247 "'$k' description in '$declaration_name'\n";
2248 }
2249 }
2250
2242 output_declaration($declaration_name, 2251 output_declaration($declaration_name,
2243 'enum', 2252 'enum',
2244 {'enum' => $declaration_name, 2253 {'enum' => $declaration_name,
@@ -2506,7 +2515,7 @@ sub check_sections($$$$$$) {
2506 } else { 2515 } else {
2507 if ($nested !~ m/\Q$sects[$sx]\E/) { 2516 if ($nested !~ m/\Q$sects[$sx]\E/) {
2508 print STDERR "${file}:$.: warning: " . 2517 print STDERR "${file}:$.: warning: " .
2509 "Excess struct/union/enum/typedef member " . 2518 "Excess $decl_type member " .
2510 "'$sects[$sx]' " . 2519 "'$sects[$sx]' " .
2511 "description in '$decl_name'\n"; 2520 "description in '$decl_name'\n";
2512 ++$warnings; 2521 ++$warnings;