A simple search over the kernel souce displays a number of correctly defined multiline macro, which generally are used as an array element initializer: % find ../linux -type f | xargs grep -B1 -H '^[:space]*\[.*\\$' However checkpatch.pl unexpectedly complains about all these macro definitions: % ./scripts/checkpatch.pl --types COMPLEX_MACRO -f include/linux/perf/arm_pmu.h ERROR: Macros with complex values should be enclosed in parentheses +#define PERF_MAP_ALL_UNSUPPORTED \ + [0 ... PERF_COUNT_HW_MAX - 1] = HW_OP_UNSUPPORTED The change intends to fix this type of false positives by flattening only array members and skipping array element designators.
Showing the changes to scripts/checkpatch.pl (1 of 1 file). Show all
Unified · Split
| @@ -4550,7 +4550,7 @@ sub process { · 4549 unmodified lines | |||
| 4550 | # Flatten any parentheses and braces | 4550 | # Flatten any parentheses and braces |
| 4551 | while ($dstat =~ s/\([^\(\)]*\)/1/ || | 4551 | while ($dstat =~ s/\([^\(\)]*\)/1/ || |
| 4552 | $dstat =~ s/\{[^\{\}]*\}/1/ || | 4552 | $dstat =~ s/\{[^\{\}]*\}/1/ || |
| 4553 | $dstat =~ s/\[[^\[\]]*\]/1/) | 4553 | $dstat =~ s/.\[[^\[\]]*\]/1/) |
| 4554 | { | 4554 | { |
| 4555 | } | 4555 | } |
| 4556 | 4556 | ||
| @@ -4570,7 +4570,8 @@ sub process { · 13 unmodified lines | |||
| 4570 | union| | 4570 | union| |
| 4571 | struct| | 4571 | struct| |
| 4572 | \.$Ident\s*=\s*| | 4572 | \.$Ident\s*=\s*| |
| 4573 | ^\"|\"$ | 4573 | ^\"|\"$| |
| 4574 | ^\[ | ||
| 4574 | }x; | 4575 | }x; |
| 4575 | #print "REST<$rest> dstat<$dstat> ctx<$ctx>\n"; | 4576 | #print "REST<$rest> dstat<$dstat> ctx<$ctx>\n"; |
| 4576 | if ($dstat ne '' && | 4577 | if ($dstat ne '' && |