Skip to content

Commit 1013c95

Browse files
[Tools] correctly check for braces in multiline branches in macro definition
https://bugs.webkit.org/show_bug.cgi?id=156441 Patch by Caitlin Potter <[email protected]> on 2016-04-10 Reviewed by Darin Adler. Prevents emitting whitespace/braces warning for code like the following: ``` #define MACRO(x) \ if (x) { \ doTheThing(); \ continue; \ } ``` * Scripts/webkitpy/style/checkers/cpp.py: (check_braces): * Scripts/webkitpy/style/checkers/cpp_unittest.py: (WebKitStyleTest.test_line_breaking): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@199288 268f45cc-cd09-0410-ab3c-d52691b4dbfc
1 parent 4f3f1c4 commit 1013c95

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

Tools/ChangeLog

+23
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,26 @@
1+
2016-04-10 Caitlin Potter <[email protected]>
2+
3+
[Tools] correctly check for braces in multiline branches in macro definition
4+
https://bugs.webkit.org/show_bug.cgi?id=156441
5+
6+
Reviewed by Darin Adler.
7+
8+
Prevents emitting whitespace/braces warning for code like the
9+
following:
10+
11+
```
12+
#define MACRO(x) \
13+
if (x) { \
14+
doTheThing(); \
15+
continue; \
16+
}
17+
```
18+
19+
* Scripts/webkitpy/style/checkers/cpp.py:
20+
(check_braces):
21+
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
22+
(WebKitStyleTest.test_line_breaking):
23+
124
2016-04-08 Youenn Fablet <[email protected]>
225

326
Testharness-based tests that time out should be able to produce a detailed output

Tools/Scripts/webkitpy/style/checkers/cpp.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -2471,8 +2471,9 @@ def check_braces(clean_lines, line_number, error):
24712471
or search(r'^#\S*', clean_lines.elided[begin_line_number + 1])):
24722472
begin_line_number = begin_line_number + 1
24732473
begin_line = clean_lines.elided[begin_line_number]
2474-
if search(r'.*{$', begin_line):
2475-
has_braces = True
2474+
2475+
if search(r'.*{(.*?\\)?$', begin_line):
2476+
has_braces = True
24762477

24772478
next_line = clean_lines.elided[begin_line_number + 1]
24782479
after_next_line = clean_lines.elided[begin_line_number + 2]

Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py

+13
Original file line numberDiff line numberDiff line change
@@ -4243,6 +4243,19 @@ def test_line_breaking(self):
42434243
self.assert_multi_line_lint(
42444244
'WTF_MAKE_NONCOPYABLE(ClassName); WTF_MAKE_FAST_ALLOCATED;\n',
42454245
'')
4246+
self.assert_multi_line_lint(
4247+
'#define MyMacro(name, status) \\\n'
4248+
' if (strstr(arg, #name) { \\\n'
4249+
' name##_ = !status; \\\n'
4250+
' continue; \\\n'
4251+
' }\n',
4252+
'')
4253+
self.assert_multi_line_lint(
4254+
'#define MyMacro(name, status) \\\n'
4255+
' if (strstr(arg, #name) \\\n'
4256+
' name##_ = !status; \\\n'
4257+
' continue;\n',
4258+
'Multi line control clauses should use braces. [whitespace/braces] [4]')
42464259
self.assert_multi_line_lint(
42474260
'if (condition) {\n'
42484261
' doSomething();\n'

0 commit comments

Comments
 (0)