check-webkit-style should allow "bool a : 1"
authordino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Mar 2015 22:57:40 +0000 (22:57 +0000)
committerdino@apple.com <dino@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Mar 2015 22:57:40 +0000 (22:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=142794

Reviewed by Brent Fulgham.

We should allow member bitfields of the form:

bool m_var : 1;

It seems that Visual Studio 8 was the last compiler that
wasn't happy about not using unsigned here. We already have
about 500 cases (in WebCore) where people were ignoring this rule.

* Scripts/webkitpy/style/checkers/cpp.py:
(check_language): Allow "bool".
* Scripts/webkitpy/style/checkers/cpp_unittest.py: Add tests.
(CppStyleTest.test_enum_bitfields):
(CppStyleTest.test_plain_integral_bitfields):

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

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

index 39a61ba..af0c840 100644 (file)
@@ -1,3 +1,24 @@
+2015-03-17  Dean Jackson  <dino@apple.com>
+
+        check-webkit-style should allow "bool a : 1"
+        https://bugs.webkit.org/show_bug.cgi?id=142794
+
+        Reviewed by Brent Fulgham.
+
+        We should allow member bitfields of the form:
+
+        bool m_var : 1;
+
+        It seems that Visual Studio 8 was the last compiler that
+        wasn't happy about not using unsigned here. We already have
+        about 500 cases (in WebCore) where people were ignoring this rule.
+
+        * Scripts/webkitpy/style/checkers/cpp.py:
+        (check_language): Allow "bool".
+        * Scripts/webkitpy/style/checkers/cpp_unittest.py: Add tests.
+        (CppStyleTest.test_enum_bitfields):
+        (CppStyleTest.test_plain_integral_bitfields):
+
 2015-03-17  Benjamin Poulain  <bpoulain@apple.com>
 
         Compile character ranges targeting the same state as range check in the bytecode
index f7f4f24..82e2b78 100644 (file)
@@ -3273,7 +3273,7 @@ def check_language(filename, clean_lines, line_number, file_extension, include_s
     matched = re.match(r'\s*((const|mutable)\s+)?([a-zA-Z_][a-zA-Z0-9_]*)\s+[a-zA-Z_][a-zA-Z0-9_]*\s*:\s*\d+\s*;', line)
     if matched:
         # Make sure the type is an enum and not an integral type
-        if not match(r'char|(short(\s+int)?)|int|long(\s+(long|int))|(signed|unsigned)(\s+int)?', matched.group(3)):
+        if not match(r'bool|char|(short(\s+int)?)|int|long(\s+(long|int))|(signed|unsigned)(\s+int)?', matched.group(3)):
             error(line_number, 'runtime/enum_bitfields', 5,
                   'Please declare enum bitfields as unsigned integral types.')
 
index 0109c67..fe33462 100644 (file)
@@ -2552,6 +2552,7 @@ class CppStyleTest(CppStyleTestBase):
         self.assert_lint('AnEnum a : 30;', errmsg)
         self.assert_lint('mutable AnEnum a : 14;', errmsg)
         self.assert_lint('const AnEnum a : 6;', errmsg)
+        self.assert_lint('bool a : 1;', '')
 
     # Integral bitfields must be declared with either signed or unsigned keyword.
     def test_plain_integral_bitfields(self):
@@ -2562,7 +2563,7 @@ class CppStyleTest(CppStyleTestBase):
         self.assert_lint('const char a : 6;', errmsg)
         self.assert_lint('long int a : 30;', errmsg)
         self.assert_lint('int a = 1 ? 0 : 30;', '')
-
+        self.assert_lint('bool a : 1;', '')
 
 class CleansedLinesTest(unittest.TestCase):
     def test_init(self):