diff options
author | Josh Matthews <josh@joshmatthews.net> | 2020-05-29 15:16:55 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2020-05-29 15:16:55 -0400 |
commit | c4f8167b6fa0d01c60deb9bb491a3565173db961 (patch) | |
tree | 99c22f04f13711514f1044b1899c5fb40a6fa438 /components/script/dom/bindings/codegen/CodegenRust.py | |
parent | 70c43b7a5c47fab15668ce257df292b8f01323c9 (diff) | |
download | servo-c4f8167b6fa0d01c60deb9bb491a3565173db961.tar.gz servo-c4f8167b6fa0d01c60deb9bb491a3565173db961.zip |
dom: Improve precision of sequence types for WebIDL codegen.
Diffstat (limited to 'components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 021757a4ad1..9247a0c0243 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -677,7 +677,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, if type.isSequence() or type.isRecord(): innerInfo = getJSToNativeConversionInfo(innerContainerType(type), descriptorProvider, - isMember=isMember, + isMember="Sequence", isAutoRooted=isAutoRooted) declType = wrapInNativeContainerType(type, innerInfo.declType) config = getConversionConfigForType(type, isEnforceRange, isClamp, treatNullAs) @@ -1075,7 +1075,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, assert not isEnforceRange and not isClamp assert isMember != "Union" - if isMember == "Dictionary" or isAutoRooted: + if isMember in ("Dictionary", "Sequence") or isAutoRooted: templateBody = "${val}.get()" if defaultValue is None: @@ -1087,7 +1087,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, else: raise TypeError("Can't handle non-null, non-undefined default value here") - if isMember == "Dictionary": + if not isAutoRooted: templateBody = "RootedTraceableBox::from_box(Heap::boxed(%s))" % templateBody if default is not None: default = "RootedTraceableBox::from_box(Heap::boxed(%s))" % default @@ -1117,7 +1117,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, templateBody = "${val}.get().to_object()" default = "ptr::null_mut()" - if isMember in ("Dictionary", "Union"): + if isMember in ("Dictionary", "Union", "Sequence") and not isAutoRooted: templateBody = "RootedTraceableBox::from_box(Heap::boxed(%s))" % templateBody default = "RootedTraceableBox::new(Heap::default())" declType = CGGeneric("RootedTraceableBox<Heap<*mut JSObject>>") |