diff options
Diffstat (limited to 'python/tidy')
-rw-r--r-- | python/tidy/servo_tidy/tidy.py | 6 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/ban-domrefcell.rs | 19 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/ban.rs | 21 | ||||
-rw-r--r-- | python/tidy/servo_tidy_tests/test_tidy.py | 8 |
4 files changed, 54 insertions, 0 deletions
diff --git a/python/tidy/servo_tidy/tidy.py b/python/tidy/servo_tidy/tidy.py index ae929d45c3c..c8b398ce8ca 100644 --- a/python/tidy/servo_tidy/tidy.py +++ b/python/tidy/servo_tidy/tidy.py @@ -549,6 +549,12 @@ def check_rust(file_name, lines): (r": &Vec<", "use &[T] instead of &Vec<T>", no_filter), # No benefit over using &str (r": &String", "use &str instead of &String", no_filter), + # There should be any use of banned types: + # Cell<JSVal>, Cell<JS<T>>, DOMRefCell<JS<T>>, DOMRefCell<HEAP<T>> + (r"(\s|:)+Cell<JSVal>", "Banned type Cell<JSVal> detected. Use MutJS<JSVal> instead", no_filter), + (r"(\s|:)+Cell<JS<.+>>", "Banned type Cell<JS<T>> detected. Use MutJS<JS<T>> instead", no_filter), + (r"DOMRefCell<JS<.+>>", "Banned type DOMRefCell<JS<T>> detected. Use MutJS<JS<T>> instead", no_filter), + (r"DOMRefCell<Heap<.+>>", "Banned type DOMRefCell<Heap<T>> detected. Use MutJS<JS<T>> instead", no_filter), # No benefit to using &Root<T> (r": &Root<", "use &T instead of &Root<T>", no_filter), (r"^&&", "operators should go at the end of the first line", no_filter), diff --git a/python/tidy/servo_tidy_tests/ban-domrefcell.rs b/python/tidy/servo_tidy_tests/ban-domrefcell.rs new file mode 100644 index 00000000000..a5953590d69 --- /dev/null +++ b/python/tidy/servo_tidy_tests/ban-domrefcell.rs @@ -0,0 +1,19 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#![feature(plugin)] +#![plugin(script_plugins)] + +extern crate script; + +use script::test::DOMRefCell; +use script::test::JS; +use script::test::Node; + +struct Foo { + bar: DOMRefCell<JS<Node>> + //~^ ERROR Banned type DOMRefCell<JS<T>> detected. Use MutJS<JS<T>> instead +} + +fn main() {} diff --git a/python/tidy/servo_tidy_tests/ban.rs b/python/tidy/servo_tidy_tests/ban.rs new file mode 100644 index 00000000000..f828053d289 --- /dev/null +++ b/python/tidy/servo_tidy_tests/ban.rs @@ -0,0 +1,21 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#![feature(plugin)] +#![plugin(script_plugins)] + +extern crate js; + +use js::jsval::JSVal; +use std::cell::Cell; +use std::cell::UnsafeCell; + +struct Foo { + bar: Cell<JSVal>, + //~^ ERROR Banned type Cell<JSVal> detected. Use MutJS<JSVal> instead + foo: UnsafeCell<JSVal> + //~^ NOT AN ERROR +} + +fn main() {} diff --git a/python/tidy/servo_tidy_tests/test_tidy.py b/python/tidy/servo_tidy_tests/test_tidy.py index 91f1c54ab55..fcc11cb673f 100644 --- a/python/tidy/servo_tidy_tests/test_tidy.py +++ b/python/tidy/servo_tidy_tests/test_tidy.py @@ -140,6 +140,14 @@ class CheckTidiness(unittest.TestCase): self.assertTrue('feature attribute is not in alphabetical order' in feature_errors.next()[2]) self.assertNoMoreErrors(feature_errors) + ban_errors = tidy.collect_errors_for_files(iterFile('ban.rs'), [], [tidy.check_rust], print_text=False) + self.assertEqual('Banned type Cell<JSVal> detected. Use MutJS<JSVal> instead', ban_errors.next()[2]) + self.assertNoMoreErrors(ban_errors) + + ban_errors = tidy.collect_errors_for_files(iterFile('ban-domrefcell.rs'), [], [tidy.check_rust], print_text=False) + self.assertEqual('Banned type DOMRefCell<JS<T>> detected. Use MutJS<JS<T>> instead', ban_errors.next()[2]) + self.assertNoMoreErrors(ban_errors) + def test_spec_link(self): tidy.SPEC_BASE_PATH = base_path errors = tidy.collect_errors_for_files(iterFile('speclink.rs'), [], [tidy.check_spec], print_text=False) |