Add cpplint support for space before [[attributes]]
Cpplint.py supports checking for spaces in front of square brackets;
this is a style violation in most cases (with the typical case being
arrays), but there are already situations where this rule is skipped
for the square bracket used for lambda captures. We add another such
exclusion here for the case of c++ attributes.
Change-Id: I2d4f972be29f5427cb8d855787c90dfa5d610e86
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2151125
Commit-Queue: Derek Morris <demorri@microsoft.com>
Reviewed-by: Edward Lesmes <ehmaldonado@chromium.org>
diff --git a/cpplint.py b/cpplint.py
index 3aa06b0..f7ad8d8 100755
--- a/cpplint.py
+++ b/cpplint.py
@@ -3161,8 +3161,11 @@
line = clean_lines.elided[linenum]
# You shouldn't have spaces before your brackets, except maybe after
- # 'delete []' or 'return []() {};'
- if Search(r'\w\s+\[', line) and not Search(r'(?:delete|return)\s+\[', line):
+ # 'delete []' or 'return []() {};', or in the case of c++ attributes
+ # like 'class [[clang::lto_visibility_public]] MyClass'.
+ if (Search(r'\w\s+\[', line)
+ and not Search(r'(?:delete|return)\s+\[', line)
+ and not Search(r'\s+\[\[', line)):
error(filename, linenum, 'whitespace/braces', 5,
'Extra space before [')