aboutsummaryrefslogtreecommitdiffstats
path: root/python/tidy
diff options
context:
space:
mode:
authorAlan Jeffrey <ajeffrey@mozilla.com>2017-06-06 15:38:35 -0500
committerAlan Jeffrey <ajeffrey@mozilla.com>2017-06-07 14:25:07 -0500
commit127008053881ad068673e2eeb3560b68f857dedf (patch)
tree8ca36e57f3ef215ed57bb6e4de3be51ba32c5a46 /python/tidy
parent7e273d6c9b86d6ffbf216e84ae7326976888e5ef (diff)
downloadservo-127008053881ad068673e2eeb3560b68f857dedf.tar.gz
servo-127008053881ad068673e2eeb3560b68f857dedf.zip
Count number of braces on a line in .
Diffstat (limited to 'python/tidy')
-rw-r--r--python/tidy/servo_tidy/tidy.py13
-rw-r--r--python/tidy/servo_tidy_tests/speclink.rs23
-rw-r--r--python/tidy/servo_tidy_tests/test_tidy.py1
3 files changed, 30 insertions, 7 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py
index 8d7e6c07b72..989b83aa505 100644
--- a/python/tidy/servo_tidy/tidy.py
+++ b/python/tidy/servo_tidy/tidy.py
@@ -828,8 +828,8 @@ def check_spec(file_name, lines):
# Pattern representing a line with comment containing a spec link
link_patt = re.compile("^\s*///? https://.+$")
- # Pattern representing a line with comment
- comment_patt = re.compile("^\s*///?.+$")
+ # Pattern representing a line with comment or attribute
+ comment_patt = re.compile("^\s*(///?.+|#\[.+\])$")
brace_count = 0
in_impl = False
@@ -851,12 +851,11 @@ def check_spec(file_name, lines):
# No more comments exist above, yield warning
yield (idx + 1, "method declared in webidl is missing a comment with a specification link")
break
- if '{' in line and in_impl:
- brace_count += 1
- if '}' in line and in_impl:
- if brace_count == 1:
+ if in_impl:
+ brace_count += line.count('{')
+ brace_count -= line.count('}')
+ if brace_count < 1:
break
- brace_count -= 1
def check_config_file(config_file, print_text=True):
diff --git a/python/tidy/servo_tidy_tests/speclink.rs b/python/tidy/servo_tidy_tests/speclink.rs
index 6c27a70a7d0..7cf5031a7bd 100644
--- a/python/tidy/servo_tidy_tests/speclink.rs
+++ b/python/tidy/servo_tidy_tests/speclink.rs
@@ -3,7 +3,30 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
impl SpecLinkMethods for SpecLink {
+ amacro!("Macros inside impls should trigger spec checks.")
+
+ // Method declarations should trigger spec checks.
fn Test(&self) -> f32 {
+ amacro!("Macros inside function declarations should not trigger spec checks.");
+ if unsafe { false } {
+ }
+ amacro!("Even if there's weird brace counts.");
0
}
+
+ // A spec link.
+ // https://example.com/
+ fn Foo() {}
+
+ /// A spec link.
+ /// https://example.com/
+ fn Foo() {}
+
+ /// A spec link.
+ /// https://example.com/
+ /// Doc comments are OK
+ // Regular comments are OK
+ #[allow(attributes_too)]
+ fn Foo() {}
}
+
diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py
index 07dbaa020dc..e02e065bd10 100644
--- a/python/tidy/servo_tidy_tests/test_tidy.py
+++ b/python/tidy/servo_tidy_tests/test_tidy.py
@@ -155,6 +155,7 @@ class CheckTidiness(unittest.TestCase):
tidy.SPEC_BASE_PATH = base_path
errors = tidy.collect_errors_for_files(iterFile('speclink.rs'), [], [tidy.check_spec], print_text=False)
self.assertEqual('method declared in webidl is missing a comment with a specification link', errors.next()[2])
+ self.assertEqual('method declared in webidl is missing a comment with a specification link', errors.next()[2])
self.assertNoMoreErrors(errors)
def test_script_thread(self):