diff options
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 0ba3de7e4cf..ff6c37fd78b 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -5793,9 +5793,16 @@ class GlobalGenRoots(): unsafe { derived.clone().transmute() } } - fn to<T: ${toBound}>(base: &JS<T>) -> JS<Self> { + fn to<T: ${toBound}>(base: &JS<T>) -> Option<JS<Self>> { + match base.get().${checkFn}() { + true => unsafe { Some(base.clone().transmute()) }, + false => None + } + } + + unsafe fn to_unchecked<T: ${toBound}>(base: &JS<T>) -> JS<Self> { assert!(base.get().${checkFn}()); - unsafe { base.clone().transmute() } + base.clone().transmute() } } ''').substitute({'checkFn': 'is_' + name.lower(), |