aboutsummaryrefslogtreecommitdiffstats
path: root/python/tidy
diff options
context:
space:
mode:
Diffstat (limited to 'python/tidy')
-rw-r--r--python/tidy/servo_tidy/tidy.py6
-rw-r--r--python/tidy/servo_tidy_tests/ban-domrefcell.rs19
-rw-r--r--python/tidy/servo_tidy_tests/ban.rs21
-rw-r--r--python/tidy/servo_tidy_tests/test_tidy.py8
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)