diff options
author | Kristian Monsen <kristianm@google.com> | 2010-06-28 16:42:48 +0100 |
---|---|---|
committer | Kristian Monsen <kristianm@google.com> | 2010-07-02 10:29:56 +0100 |
commit | 06ea8e899e48f1f2f396b70e63fae369f2f23232 (patch) | |
tree | 20c1428cd05c76f32394ab354ea35ed99acd86d8 /WebKitTools/Scripts/webkitpy/style | |
parent | 72aad67af14193199e29cdd5c4ddc095a8b9a8a8 (diff) | |
download | external_webkit-06ea8e899e48f1f2f396b70e63fae369f2f23232.zip external_webkit-06ea8e899e48f1f2f396b70e63fae369f2f23232.tar.gz external_webkit-06ea8e899e48f1f2f396b70e63fae369f2f23232.tar.bz2 |
Merge WebKit at r61871: Initial merge by git.
Change-Id: I6cff43abca9cc4782e088a469ad4f03f166a65d5
Diffstat (limited to 'WebKitTools/Scripts/webkitpy/style')
-rw-r--r-- | WebKitTools/Scripts/webkitpy/style/checkers/cpp.py | 28 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/style/checkers/cpp_unittest.py | 31 |
2 files changed, 36 insertions, 23 deletions
diff --git a/WebKitTools/Scripts/webkitpy/style/checkers/cpp.py b/WebKitTools/Scripts/webkitpy/style/checkers/cpp.py index a77bff0..611afdc 100644 --- a/WebKitTools/Scripts/webkitpy/style/checkers/cpp.py +++ b/WebKitTools/Scripts/webkitpy/style/checkers/cpp.py @@ -161,7 +161,7 @@ def up_to_unmatched_closing_paren(s): Returns: A pair of strings (prefix before first unmatched ')', - reminder of s after first unmatched ')'), e.g., + remainder of s after first unmatched ')'), e.g., up_to_unmatched_closing_paren("a == (b + c)) { ") returns "a == (b + c)", " {". Returns None, None if there is no unmatched ')' @@ -1337,26 +1337,25 @@ def check_spacing(file_extension, clean_lines, line_number, error): # there should either be zero or one spaces inside the parens. # We don't want: "if ( foo)" or "if ( foo )". # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed. - matched = search(r'\b(?P<statement>if|for|foreach|while|switch)\s*\((?P<reminder>.*)$', line) + matched = search(r'\b(?P<statement>if|for|foreach|while|switch)\s*\((?P<remainder>.*)$', line) if matched: statement = matched.group('statement') - condition, rest = up_to_unmatched_closing_paren(matched.group('reminder')) + condition, rest = up_to_unmatched_closing_paren(matched.group('remainder')) if condition is not None: condition_match = search(r'(?P<leading>[ ]*)(?P<separator>.).*[^ ]+(?P<trailing>[ ]*)', condition) if condition_match: n_leading = len(condition_match.group('leading')) n_trailing = len(condition_match.group('trailing')) - if n_leading != n_trailing: - for_exception = statement == 'for' and ( - (condition.startswith(' ;') and n_trailing == 0) or - (condition.endswith('; ') and n_leading == 0)) + if n_leading != 0: + for_exception = statement == 'for' and condition.startswith(' ;') if not for_exception: error(line_number, 'whitespace/parens', 5, - 'Mismatching spaces inside () in %s' % statement) - if n_leading > 1: - error(line_number, 'whitespace/parens', 5, - 'Should have zero or one spaces inside ( and ) in %s' % - statement) + 'Extra space after ( in %s' % statement) + if n_trailing != 0: + for_exception = statement == 'for' and condition.endswith('; ') + if not for_exception: + error(line_number, 'whitespace/parens', 5, + 'Extra space before ) in %s' % statement) # Do not check for more than one command in macros in_macro = match(r'\s*#define', line) @@ -1369,6 +1368,11 @@ def check_spacing(file_extension, clean_lines, line_number, error): error(line_number, 'whitespace/comma', 3, 'Missing space after ,') + matched = search(r'^\s*(?P<token1>[a-zA-Z0-9_\*&]+)\s\s+(?P<token2>[a-zA-Z0-9_\*&]+)', line) + if matched: + error(line_number, 'whitespace/declaration', 3, + 'Extra space between %s and %s' % (matched.group('token1'), matched.group('token2'))) + if file_extension == 'cpp': # C++ should have the & or * beside the type not the variable name. matched = match(r'\s*\w+(?<!\breturn|\bdelete)\s+(?P<pointer_operator>\*|\&)\w+', line) diff --git a/WebKitTools/Scripts/webkitpy/style/checkers/cpp_unittest.py b/WebKitTools/Scripts/webkitpy/style/checkers/cpp_unittest.py index d7cb876..2dde549 100644 --- a/WebKitTools/Scripts/webkitpy/style/checkers/cpp_unittest.py +++ b/WebKitTools/Scripts/webkitpy/style/checkers/cpp_unittest.py @@ -1164,28 +1164,30 @@ class CppStyleTest(CppStyleTestBase): '') def test_mismatching_spaces_in_parens(self): - self.assert_lint('if (foo ) {', 'Mismatching spaces inside () in if' + self.assert_lint('if (foo ) {', 'Extra space before ) in if' ' [whitespace/parens] [5]') - self.assert_lint('switch ( foo) {', 'Mismatching spaces inside () in switch' + self.assert_lint('switch ( foo) {', 'Extra space after ( in switch' ' [whitespace/parens] [5]') - self.assert_lint('for (foo; ba; bar ) {', 'Mismatching spaces inside () in for' + self.assert_lint('for (foo; ba; bar ) {', 'Extra space before ) in for' ' [whitespace/parens] [5]') - self.assert_lint('for ((foo); (ba); (bar) ) {', 'Mismatching spaces inside () in for' + self.assert_lint('for ((foo); (ba); (bar) ) {', 'Extra space before ) in for' ' [whitespace/parens] [5]') self.assert_lint('for (; foo; bar) {', '') self.assert_lint('for (; (foo); (bar)) {', '') self.assert_lint('for ( ; foo; bar) {', '') self.assert_lint('for ( ; (foo); (bar)) {', '') - self.assert_lint('for ( ; foo; bar ) {', '') - self.assert_lint('for ( ; (foo); (bar) ) {', '') + self.assert_lint('for ( ; foo; bar ) {', 'Extra space before ) in for' + ' [whitespace/parens] [5]') + self.assert_lint('for ( ; (foo); (bar) ) {', 'Extra space before ) in for' + ' [whitespace/parens] [5]') self.assert_lint('for (foo; bar; ) {', '') self.assert_lint('for ((foo); (bar); ) {', '') - self.assert_lint('foreach (foo, foos ) {', 'Mismatching spaces inside () in foreach' + self.assert_lint('foreach (foo, foos ) {', 'Extra space before ) in foreach' ' [whitespace/parens] [5]') - self.assert_lint('foreach ( foo, foos) {', 'Mismatching spaces inside () in foreach' + self.assert_lint('foreach ( foo, foos) {', 'Extra space after ( in foreach' + ' [whitespace/parens] [5]') + self.assert_lint('while ( foo) {', 'Extra space after ( in while' ' [whitespace/parens] [5]') - self.assert_lint('while ( foo ) {', 'Should have zero or one spaces inside' - ' ( and ) in while [whitespace/parens] [5]') def test_spacing_for_fncall(self): self.assert_lint('if (foo) {', '') @@ -1542,6 +1544,13 @@ class CppStyleTest(CppStyleTestBase): self.assert_lint('f(a, /* name */ b);', '') self.assert_lint('f(a, /* name */b);', '') + def test_declaration(self): + self.assert_lint('int a;', '') + self.assert_lint('int a;', 'Extra space between int and a [whitespace/declaration] [3]') + self.assert_lint('int* a;', 'Extra space between int* and a [whitespace/declaration] [3]') + self.assert_lint('else if { }', '') + self.assert_lint('else if { }', 'Extra space between else and if [whitespace/declaration] [3]') + def test_pointer_reference_marker_location(self): self.assert_lint('int* b;', '', 'foo.cpp') self.assert_lint('int *b;', @@ -3059,7 +3068,7 @@ class WebKitStyleTest(CppStyleTestBase): '') self.assert_multi_line_lint( '#define TEST_ASSERT(expression) do { if ( !(expression)) { TestsController::shared().testFailed(__FILE__, __LINE__, #expression); return; } } while (0)\n', - 'Mismatching spaces inside () in if [whitespace/parens] [5]') + 'Extra space after ( in if [whitespace/parens] [5]') # FIXME: currently we only check first conditional, so we cannot detect errors in next ones. # self.assert_multi_line_lint( # '#define TEST_ASSERT(expression) do { if (!(expression)) { TestsController::shared().testFailed(__FILE__, __LINE__, #expression); return; } } while (0 )\n', |