diff options
-rw-r--r-- | components/plugins/lints/ban.rs | 6 | ||||
-rw-r--r-- | components/servo/Cargo.lock | 1 | ||||
-rw-r--r-- | tests/compiletest/plugin/Cargo.toml | 3 | ||||
-rw-r--r-- | tests/compiletest/plugin/compile-fail/ban-domrefcell.rs | 19 |
4 files changed, 29 insertions, 0 deletions
diff --git a/components/plugins/lints/ban.rs b/components/plugins/lints/ban.rs index 02037a5d76a..0e1ebc94721 100644 --- a/components/plugins/lints/ban.rs +++ b/components/plugins/lints/ban.rs @@ -37,5 +37,11 @@ impl EarlyLintPass for BanPass { .is_some() { cx.span_lint(BANNED_TYPE, ty.span, "Banned type Cell<JSVal> detected. Use MutHeap<JSVal> instead") } + if match_ty_unwrap(ty, &["dom", "bindings", "cell", "DOMRefCell"]) + .and_then(|t| t.get(0)) + .and_then(|t| match_ty_unwrap(&**t, &["dom", "bindings", "js", "JS"])) + .is_some() { + cx.span_lint(BANNED_TYPE, ty.span, "Banned type DOMRefCell<JS<T>> detected. Use MutHeap<JS<T>> instead") + } } } diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index e620303eb64..c7c11583a17 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -1472,6 +1472,7 @@ version = "0.0.1" dependencies = [ "compiletest_helper 0.0.1", "plugins 0.0.1", + "script 0.0.1", ] [[package]] diff --git a/tests/compiletest/plugin/Cargo.toml b/tests/compiletest/plugin/Cargo.toml index 6ba2a22f198..363882b5429 100644 --- a/tests/compiletest/plugin/Cargo.toml +++ b/tests/compiletest/plugin/Cargo.toml @@ -13,3 +13,6 @@ path = "../helper" [dependencies.plugins] path = "../../../components/plugins" + +[dependencies.script] +path = "../../../components/script" diff --git a/tests/compiletest/plugin/compile-fail/ban-domrefcell.rs b/tests/compiletest/plugin/compile-fail/ban-domrefcell.rs new file mode 100644 index 00000000000..4e65ad410a6 --- /dev/null +++ b/tests/compiletest/plugin/compile-fail/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(plugins)] + +extern crate script; + +use script::dom::bindings::cell::DOMRefCell; +use script::dom::bindings::js::JS; +use script::dom::node::Node; + +struct Foo { + bar: DOMRefCell<JS<Node>> + //~^ ERROR Banned type DOMRefCell<JS<T>> detected. Use MutHeap<JS<T>> instead, +} + +fn main() {} |