From 444eddb4a14bca067ba1f61f6a098aa38f099f67 Mon Sep 17 00:00:00 2001 From: Yoav Alon Date: Wed, 9 Mar 2016 23:48:32 +0200 Subject: [PATCH] Added compiler lint ban on DOMRefCell --- components/plugins/lints/ban.rs | 6 ++++++ components/servo/Cargo.lock | 1 + tests/compiletest/plugin/Cargo.toml | 3 +++ .../plugin/compile-fail/ban-domrefcell.rs | 19 +++++++++++++++++++ 4 files changed, 29 insertions(+) create mode 100644 tests/compiletest/plugin/compile-fail/ban-domrefcell.rs 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 detected. Use MutHeap 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> detected. Use MutHeap> 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> + //~^ ERROR Banned type DOMRefCell> detected. Use MutHeap> instead, +} + +fn main() {}