OpenZFS 6459 - cstyle doesn't detect opening braces on the same line as function header
Authored by: Paul Dagnelie <pcd@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: Alex Reece <alex@delphix.com> Reviewed by: Albert Lee <trisk@omniti.com> Reviewed by: Dan McDonald <danmcd@omniti.com> Approved by: Robert Mustacchi <rm@joyent.com> Ported-by: George Melikov mail@gmelikov.ru OpenZFS-issue: https://www.illumos.org/issues/6459 OpenZFS-commit: https://github.com/openzfs/openzfs/commit/c4567a6 Porting notes: These changes are adopted for ZoL codebase because of many false positive warnings.
This commit is contained in:
parent
bb7ffdaf5a
commit
ec441a9c53
|
@ -240,6 +240,7 @@ my $comment_done = 0;
|
||||||
my $in_warlock_comment = 0;
|
my $in_warlock_comment = 0;
|
||||||
my $in_function = 0;
|
my $in_function = 0;
|
||||||
my $in_function_header = 0;
|
my $in_function_header = 0;
|
||||||
|
my $function_header_full_indent = 0;
|
||||||
my $in_declaration = 0;
|
my $in_declaration = 0;
|
||||||
my $note_level = 0;
|
my $note_level = 0;
|
||||||
my $nextok = 0;
|
my $nextok = 0;
|
||||||
|
@ -385,6 +386,7 @@ line: while (<$filehandle>) {
|
||||||
$in_function = 1;
|
$in_function = 1;
|
||||||
$in_declaration = 1;
|
$in_declaration = 1;
|
||||||
$in_function_header = 0;
|
$in_function_header = 0;
|
||||||
|
$function_header_full_indent = 0;
|
||||||
$prev = $line;
|
$prev = $line;
|
||||||
next line;
|
next line;
|
||||||
}
|
}
|
||||||
|
@ -397,8 +399,54 @@ line: while (<$filehandle>) {
|
||||||
$prev = $line;
|
$prev = $line;
|
||||||
next line;
|
next line;
|
||||||
}
|
}
|
||||||
if (/^\w*\($/) {
|
if ($in_function_header && ! /^ ./ ) {
|
||||||
|
if (/^{}$/ # empty functions
|
||||||
|
|| /;/ #run function with multiline arguments
|
||||||
|
|| /#/ #preprocessor commands
|
||||||
|
|| /^[^\s\\]*\(.*\)$/ #functions without ; at the end
|
||||||
|
|| /^$/ #function declaration can't have empty line
|
||||||
|
) {
|
||||||
|
$in_function_header = 0;
|
||||||
|
$function_header_full_indent = 0;
|
||||||
|
} elsif ($prev =~ /^__attribute__/) { #__attribute__((*))
|
||||||
|
$in_function_header = 0;
|
||||||
|
$function_header_full_indent = 0;
|
||||||
|
$prev = $line;
|
||||||
|
next line;
|
||||||
|
} elsif ($picky && ! (/^\t/ && $function_header_full_indent != 0)) {
|
||||||
|
|
||||||
|
err("continuation line should be indented by 4 spaces");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# If this matches something of form "foo(", it's probably a function
|
||||||
|
# definition, unless it ends with ") bar;", in which case it's a declaration
|
||||||
|
# that uses a macro to generate the type.
|
||||||
|
#
|
||||||
|
if (/^\w+\(/ && !/\) \w+;/) {
|
||||||
$in_function_header = 1;
|
$in_function_header = 1;
|
||||||
|
if (/\($/) {
|
||||||
|
$function_header_full_indent = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($in_function_header && /^{$/) {
|
||||||
|
$in_function_header = 0;
|
||||||
|
$function_header_full_indent = 0;
|
||||||
|
$in_function = 1;
|
||||||
|
}
|
||||||
|
if ($in_function_header && /\);$/) {
|
||||||
|
$in_function_header = 0;
|
||||||
|
$function_header_full_indent = 0;
|
||||||
|
}
|
||||||
|
if ($in_function_header && /{$/ ) {
|
||||||
|
if ($picky == 1) {
|
||||||
|
err("opening brace on same line as function header");
|
||||||
|
}
|
||||||
|
$in_function_header = 0;
|
||||||
|
$function_header_full_indent = 0;
|
||||||
|
$in_function = 1;
|
||||||
|
next line;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($in_warlock_comment && /\*\//) {
|
if ($in_warlock_comment && /\*\//) {
|
||||||
|
|
Loading…
Reference in New Issue