A false positive occurs when a user specifies a using declaration for a stream operator:
10: using ns::operator<<;
file.cpp:10: Missing spaces around << [whitespace/operators] [3]
The regular expression has been updated to find this valid use case of the <<
text string.
Review URL: https://codereview.appspot.com/22190043
Patch from Matt Clarkson <mattyclarkson@gmail.com>.
diff --git a/cpplint/cpplint.py b/cpplint/cpplint.py
index 7ca3862..b5493b6 100755
--- a/cpplint/cpplint.py
+++ b/cpplint/cpplint.py
@@ -2681,8 +2681,11 @@
'Missing spaces around %s' % match.group(1))
# We allow no-spaces around << when used like this: 10<<20, but
# not otherwise (particularly, not when used as streams)
- match = Search(r'(\S)(?:L|UL|ULL|l|ul|ull)?<<(\S)', line)
- if match and not (match.group(1).isdigit() and match.group(2).isdigit()):
+ # Also ignore using ns::operator<<;
+ match = Search(r'(operator|\S)(?:L|UL|ULL|l|ul|ull)?<<(\S)', line)
+ if (match and
+ not (match.group(1).isdigit() and match.group(2).isdigit()) and
+ not (match.group(1) == 'operator' and match.group(2) == ';')):
error(filename, linenum, 'whitespace/operators', 3,
'Missing spaces around <<')
elif not Match(r'#.*include', line):