mirror of
https://github.com/servo/servo.git
synced 2025-07-23 07:13:52 +01:00
Auto merge of #9946 - yoava333:master, r=KiChjang
Added compiler lint ban on DOMRefCell this resolves https://github.com/servo/servo/issues/9924 <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9946) <!-- Reviewable:end -->
This commit is contained in:
commit
d23b7481d6
4 changed files with 29 additions and 0 deletions
|
@ -37,5 +37,11 @@ impl EarlyLintPass for BanPass {
|
||||||
.is_some() {
|
.is_some() {
|
||||||
cx.span_lint(BANNED_TYPE, ty.span, "Banned type Cell<JSVal> detected. Use MutHeap<JSVal> instead")
|
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")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1
components/servo/Cargo.lock
generated
1
components/servo/Cargo.lock
generated
|
@ -1472,6 +1472,7 @@ version = "0.0.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"compiletest_helper 0.0.1",
|
"compiletest_helper 0.0.1",
|
||||||
"plugins 0.0.1",
|
"plugins 0.0.1",
|
||||||
|
"script 0.0.1",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|
|
@ -13,3 +13,6 @@ path = "../helper"
|
||||||
|
|
||||||
[dependencies.plugins]
|
[dependencies.plugins]
|
||||||
path = "../../../components/plugins"
|
path = "../../../components/plugins"
|
||||||
|
|
||||||
|
[dependencies.script]
|
||||||
|
path = "../../../components/script"
|
||||||
|
|
19
tests/compiletest/plugin/compile-fail/ban-domrefcell.rs
Normal file
19
tests/compiletest/plugin/compile-fail/ban-domrefcell.rs
Normal file
|
@ -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() {}
|
Loading…
Add table
Add a link
Reference in a new issue