diff options
Diffstat (limited to 'python/tidy')
-rw-r--r-- | python/tidy/servo_tidy/tidy.py | 3 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/script_thread.rs | 18 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/test_tidy.py | 6 |
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]) |