aboutsummaryrefslogtreecommitdiffstats
path: root/python/tidy
diff options
context:
space:
mode:
Diffstat (limited to 'python/tidy')
-rw-r--r--python/tidy/servo_tidy/tidy.py3
-rw-r--r--python/tidy/servo_tidy_tests/script_thread.rs18
-rw-r--r--python/tidy/servo_tidy_tests/test_tidy.py6
3 files changed, 27 insertions, 0 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py
index b40bdd67194..7855d4c7a50 100644
--- a/python/tidy/servo_tidy/tidy.py
+++ b/python/tidy/servo_tidy/tidy.py
@@ -542,6 +542,9 @@ def check_rust(file_name, lines):
lambda match, line: line.startswith('use ')),
(r"^\s*else {", "else braces should be on the same line", no_filter),
(r"[^$ ]\([ \t]", "extra space after (", no_filter),
+ # This particular pattern is not reentrant-safe in script_thread.rs
+ (r"match self.documents.borrow", "use a separate variable for the match expression",
+ lambda match, line: file_name.endswith('script_thread.rs')),
]
for pattern, message, filter_func in regex_rules:
diff --git a/python/tidy/servo_tidy_tests/script_thread.rs b/python/tidy/servo_tidy_tests/script_thread.rs
new file mode 100644
index 00000000000..5dbeaec0e17
--- /dev/null
+++ b/python/tidy/servo_tidy_tests/script_thread.rs
@@ -0,0 +1,18 @@
+fn main() {
+ // This should trigger an error.
+ match self.documents.borrow_mut() {
+ _ => {}
+ }
+ // This should trigger an error.
+ match self.documents.borrow() {
+ _ => {}
+ }
+ // This should not trigger an error.
+ match { self.documents.borrow().find_window(id) } {
+ => {}
+ }
+ // This should not trigger an error.
+ match self.documents_status.borrow() {
+ => {}
+ }
+}
diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py
index c6fe8bd83fa..265c485a106 100644
--- a/python/tidy/servo_tidy_tests/test_tidy.py
+++ b/python/tidy/servo_tidy_tests/test_tidy.py
@@ -141,6 +141,12 @@ class CheckTidiness(unittest.TestCase):
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):
+ errors = tidy.collect_errors_for_files(iterFile('script_thread.rs'), [], [tidy.check_rust], print_text=False)
+ self.assertEqual('use a separate variable for the match expression', errors.next()[2])
+ self.assertEqual('use a separate variable for the match expression', errors.next()[2])
+ self.assertNoMoreErrors(errors)
+
def test_webidl(self):
errors = tidy.collect_errors_for_files(iterFile('spec.webidl'), [tidy.check_webidl_spec], [], print_text=False)
self.assertEqual('No specification link found.', errors.next()[2])