diff options
author | Manish Goregaokar <manishsmail@gmail.com> | 2014-09-16 01:28:36 +0530 |
---|---|---|
committer | Manish Goregaokar <manishsmail@gmail.com> | 2014-09-16 22:11:27 +0530 |
commit | 12dc54d23849f6bc90667e2df432e30587e4af49 (patch) | |
tree | 6b3a8ba1d1bd343ec65108e7b5f67ff1a4154311 /components/script/dom/bindings/js.rs | |
parent | 13ae369dec3f02b5f992f1c6c276cde646ef39e9 (diff) | |
download | servo-12dc54d23849f6bc90667e2df432e30587e4af49.tar.gz servo-12dc54d23849f6bc90667e2df432e30587e4af49.zip |
Add unrooted_must_root lint for enums and structs containing JS<T>, as well as functions with JS<T> in their parameter list
For safe wrappers over JS<T> (eg Temporary<T>) use #[allow(unrooted_must_root)].
For all other types containing a #[must_root] value, annotate the type with #[must_root] to ensure that it is never used unrooted
Diffstat (limited to 'components/script/dom/bindings/js.rs')
-rw-r--r-- | components/script/dom/bindings/js.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/components/script/dom/bindings/js.rs b/components/script/dom/bindings/js.rs index ab8b3e3c7f5..c77ae3cba17 100644 --- a/components/script/dom/bindings/js.rs +++ b/components/script/dom/bindings/js.rs @@ -61,6 +61,7 @@ use std::mem; /// Importantly, it requires explicit rooting in order to interact with the inner value. /// Can be assigned into JS-owned member fields (i.e. `JS<T>` types) safely via the /// `JS<T>::assign` method or `OptionalSettable::assign` (for `Option<JS<T>>` fields). +#[allow(unrooted_must_root)] pub struct Temporary<T> { inner: JS<T>, /// On-stack JS pointer to assuage conservative stack scanner @@ -106,6 +107,7 @@ impl<T: Reflectable> Temporary<T> { } /// A rooted, JS-owned value. Must only be used as a field in other JS-owned types. +#[must_root] pub struct JS<T> { ptr: *const T } |