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
This commit is contained in:
Manish Goregaokar 2014-09-16 01:28:36 +05:30
parent 13ae369dec
commit 12dc54d238
22 changed files with 101 additions and 4 deletions

View file

@ -2868,7 +2868,10 @@ class CGUnionStruct(CGThing):
enumConversions = [
" e%s(ref inner) => inner.to_jsval(cx)," % v["name"] for v in templateVars
]
return ("""pub enum %s {
# XXXManishearth The following should be #[must_root],
# however we currently allow it till #2661 is fixed
return ("""#[allow(unrooted_must_root)]
pub enum %s {
%s
}