Style Checking Error when Objective C Blocks passed as Argument
authorjbedard@apple.com <jbedard@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 7 Oct 2016 15:00:57 +0000 (15:00 +0000)
committerjbedard@apple.com <jbedard@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 7 Oct 2016 15:00:57 +0000 (15:00 +0000)
https://bugs.webkit.org/show_bug.cgi?id=162463

Reviewed by Darin Adler.

* Scripts/webkitpy/style/checkers/cpp.py:
(regex_for_lambdas_and_blocks): Consider case where block is passed as a function argument.
* Scripts/webkitpy/style/checkers/cpp_unittest.py:
(CppStyleTest.test_objective_c_block_as_argument): Test case where block is passed as a function argument.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@206911 268f45cc-cd09-0410-ab3c-d52691b4dbfc

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

index 2fd2f80..632bf04 100644 (file)
@@ -1,3 +1,15 @@
+2016-10-07  Jonathan Bedard  <jbedard@apple.com>
+
+        Style Checking Error when Objective C Blocks passed as Argument
+        https://bugs.webkit.org/show_bug.cgi?id=162463
+
+        Reviewed by Darin Adler.
+
+        * Scripts/webkitpy/style/checkers/cpp.py:
+        (regex_for_lambdas_and_blocks): Consider case where block is passed as a function argument.
+        * Scripts/webkitpy/style/checkers/cpp_unittest.py:
+        (CppStyleTest.test_objective_c_block_as_argument): Test case where block is passed as a function argument. 
+
 2016-10-07  Philippe Normand  <pnormand@igalia.com>
 
         [GTK] Docs build failure
index f925138..c9b412a 100644 (file)
@@ -1244,7 +1244,7 @@ class _EnumState(object):
 
 def regex_for_lambdas_and_blocks(line, line_number, file_state, error):
     cpp_result = search(r'\s\[.*?\]\s', line)
-    objc_result = search(r'(\s\^\s?\(.*?\)\s|\^\s?\{)', line)
+    objc_result = search(r'(\s\^\s?\(.*?\)\s|\^\s?\{|:\^\s?\(.*?\)\s\{)', line)
     if cpp_result:
         group = cpp_result.group()
         targ_error = None
index 6c143a9..d5ddb74 100644 (file)
@@ -1905,6 +1905,11 @@ class CppStyleTest(CppStyleTestBase):
         self.assert_lint('        ^{', 'No space between ^ and block definition.  [whitespace/brackets] [4]', 'foo.m')
         self.assert_lint('        ^ (arg1, arg2) {', 'Extra space between ^ and block arguments.  [whitespace/brackets] [4]', 'foo.m')
 
+    def test_objective_c_block_as_argument(self):
+        self.assert_lint('        withLambda:^(var, var_ref) {', '', 'foo.mm')
+        self.assert_lint('        withLambda:^ {', '', 'foo.m')
+        self.assert_lint('        withLambda:^{', 'No space between ^ and block definition.  [whitespace/brackets] [4]', 'foo.m')
+
     def test_spacing_around_else(self):
         self.assert_lint('}else {', 'Missing space before else'
                          '  [whitespace/braces] [5]')