Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5cb5c31c authored by Johannes Berg's avatar Johannes Berg Committed by Jonathan Corbet
Browse files

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: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent 8a29896a
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -2168,7 +2168,7 @@ sub dump_struct($$) {
    my $nested;

    if ($x =~ /(struct|union)\s+(\w+)\s*{(.*)}/) {
	#my $decl_type = $1;
	my $decl_type = $1;
	$declaration_name = $2;
	my $members = $3;

@@ -2194,7 +2194,7 @@ sub dump_struct($$) {
	$members =~ s/DECLARE_HASHTABLE\s*\(([^,)]+), ([^,)]+)\)/unsigned long $1\[1 << (($2) - 1)\]/gos;

	create_parameterlist($members, ';', $file);
	check_sections($file, $declaration_name, "struct", $sectcheck, $struct_actual, $nested);
	check_sections($file, $declaration_name, $decl_type, $sectcheck, $struct_actual, $nested);

	output_declaration($declaration_name,
			   'struct',
@@ -2226,6 +2226,8 @@ sub dump_enum($$) {
    if ($x =~ /enum\s+(\w+)\s*{(.*)}/) {
	$declaration_name = $1;
	my $members = $2;
	my %_members;

	$members =~ s/\s+$//;

	foreach my $arg (split ',', $members) {
@@ -2236,7 +2238,14 @@ sub dump_enum($$) {
		print STDERR "${file}:$.: warning: Enum value '$arg' ".
		    "not described in enum '$declaration_name'\n";
	    }
	    $_members{$arg} = 1;
	}

	while (my ($k, $v) = each %parameterdescs) {
	    if (!exists($_members{$k})) {
	     print STDERR "${file}:$.: warning: Excess enum value " .
	                  "'$k' description in '$declaration_name'\n";
	    }
        }

	output_declaration($declaration_name,
@@ -2506,7 +2515,7 @@ sub check_sections($$$$$$) {
			} else {
				if ($nested !~ m/\Q$sects[$sx]\E/) {
				    print STDERR "${file}:$.: warning: " .
					"Excess struct/union/enum/typedef member " .
					"Excess $decl_type member " .
					"'$sects[$sx]' " .
					"description in '$decl_name'\n";
				    ++$warnings;