[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198
levin at chromium.org
levin at chromium.org
Sun Feb 20 22:56:47 UTC 2011
The following commit has been merged in the webkit-1.3 branch:
commit 2966763ff9e0b52d12c3200bd76aa52b13395383
Author: levin at chromium.org <levin at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Jan 14 08:56:14 2011 +0000
check-webkit-style: _FunctionState should detect pure functions.
https://bugs.webkit.org/show_bug.cgi?id=52428
Reviewed by Shinichiro Hamaji.
* Scripts/webkitpy/style/checkers/cpp.py: Added detection for if a function declaration
is a pure virtual function.
* Scripts/webkitpy/style/checkers/cpp_unittest.py: Added tests for verifying that pure
virtual functions are correctly detected.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75775 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index a7e507d..abf0a7b 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,15 @@
+2011-01-14 David Levin <levin at chromium.org>
+
+ Reviewed by Shinichiro Hamaji.
+
+ check-webkit-style: _FunctionState should detect pure functions.
+ https://bugs.webkit.org/show_bug.cgi?id=52428
+
+ * Scripts/webkitpy/style/checkers/cpp.py: Added detection for if a function declaration
+ is a pure virtual function.
+ * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added tests for verifying that pure
+ virtual functions are correctly detected.
+
2011-01-13 Ilya Tikhonovsky <loislo at chromium.org>
Reviewed by Yury Semikhatsky.
diff --git a/Tools/Scripts/webkitpy/style/checkers/cpp.py b/Tools/Scripts/webkitpy/style/checkers/cpp.py
index 61a3dbd..2f6dab2 100644
--- a/Tools/Scripts/webkitpy/style/checkers/cpp.py
+++ b/Tools/Scripts/webkitpy/style/checkers/cpp.py
@@ -517,6 +517,10 @@ class _FunctionState(object):
self.is_declaration = clean_lines.elided[body_start_position.row][body_start_position.column] == ';'
self.parameter_start_position = parameter_start_position
self.parameter_end_position = parameter_end_position
+ self.is_pure = False
+ if self.is_declaration:
+ characters_after_parameters = SingleLineView(clean_lines.elided, parameter_end_position, body_start_position).single_line
+ self.is_pure = bool(match(r'\s*=\s*0\s*', characters_after_parameters))
self._clean_lines = clean_lines
self._parameter_list = None
diff --git a/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py b/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
index 1596771..d3601a2 100644
--- a/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
+++ b/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
@@ -362,6 +362,7 @@ class FunctionDetectionTest(CppStyleTestBase):
return
self.assertEquals(function_state.in_a_function, True)
self.assertEquals(function_state.current_function, function_information['name'] + '()')
+ self.assertEquals(function_state.is_pure, function_information['is_pure'])
self.assertEquals(function_state.is_declaration, function_information['is_declaration'])
self.assert_positions_equal(function_state.parameter_start_position, function_information['parameter_start_position'])
self.assert_positions_equal(function_state.parameter_end_position, function_information['parameter_end_position'])
@@ -387,6 +388,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 29),
'body_start_position': (0, 30),
'end_position': (1, 1),
+ 'is_pure': False,
'is_declaration': False})
def test_function_declaration_detection(self):
@@ -397,6 +399,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 23),
'body_start_position': (0, 23),
'end_position': (0, 24),
+ 'is_pure': False,
'is_declaration': True})
self.perform_function_detection(
@@ -406,6 +409,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 76),
'body_start_position': (0, 76),
'end_position': (0, 77),
+ 'is_pure': False,
'is_declaration': True})
self.perform_function_detection(
@@ -415,6 +419,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 76),
'body_start_position': (0, 76),
'end_position': (0, 77),
+ 'is_pure': False,
'is_declaration': True})
self.perform_function_detection(
@@ -424,6 +429,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 77),
'body_start_position': (0, 77),
'end_position': (0, 78),
+ 'is_pure': False,
'is_declaration': True})
self.perform_function_detection(
@@ -433,6 +439,41 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 76),
'body_start_position': (0, 76),
'end_position': (0, 77),
+ 'is_pure': False,
+ 'is_declaration': True})
+
+ def test_pure_function_detection(self):
+ self.perform_function_detection(
+ ['virtual void theTestFunctionName(int = 0);'],
+ {'name': 'theTestFunctionName',
+ 'parameter_start_position': (0, 32),
+ 'parameter_end_position': (0, 41),
+ 'body_start_position': (0, 41),
+ 'end_position': (0, 42),
+ 'is_pure': False,
+ 'is_declaration': True})
+
+ self.perform_function_detection(
+ ['virtual void theTestFunctionName(int) = 0;'],
+ {'name': 'theTestFunctionName',
+ 'parameter_start_position': (0, 32),
+ 'parameter_end_position': (0, 37),
+ 'body_start_position': (0, 41),
+ 'end_position': (0, 42),
+ 'is_pure': True,
+ 'is_declaration': True})
+
+ # Hopefully, no one writes code like this but it is a tricky case.
+ self.perform_function_detection(
+ ['virtual void theTestFunctionName(int)',
+ ' = ',
+ ' 0 ;'],
+ {'name': 'theTestFunctionName',
+ 'parameter_start_position': (0, 32),
+ 'parameter_end_position': (0, 37),
+ 'body_start_position': (2, 3),
+ 'end_position': (2, 4),
+ 'is_pure': True,
'is_declaration': True})
def test_ignore_macros(self):
@@ -451,6 +492,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (2, 1),
'body_start_position': (2, 1),
'end_position': (2, 2),
+ 'is_pure': False,
'is_declaration': True})
# Simple test case with something that is not a function.
@@ -465,6 +507,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 19),
'body_start_position': (0, 19),
'end_position': (0, 20),
+ 'is_pure': False,
'is_declaration': True,
'parameter_list': ()})
@@ -476,6 +519,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 22),
'body_start_position': (0, 22),
'end_position': (0, 23),
+ 'is_pure': False,
'is_declaration': True,
'parameter_list':
({'type': 'int', 'name': '', 'row': 0},)})
@@ -488,6 +532,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 76),
'body_start_position': (0, 76),
'end_position': (0, 77),
+ 'is_pure': False,
'is_declaration': True,
'parameter_list':
({'type': 'unsigned', 'name': 'a', 'row': 0},
@@ -503,6 +548,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (0, 147),
'body_start_position': (0, 147),
'end_position': (0, 148),
+ 'is_pure': False,
'is_declaration': True,
'parameter_list':
({'type': 'Vector<String>*&', 'name': '', 'row': 0},
@@ -522,6 +568,7 @@ class FunctionDetectionTest(CppStyleTestBase):
'parameter_end_position': (3, 17),
'body_start_position': (3, 17),
'end_position': (3, 18),
+ 'is_pure': False,
'is_declaration': True,
'parameter_list':
({'type': 'PassRefPtr<MyClass>', 'name': 'paramName', 'row': 0},
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list