aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index eb219f0fe30..21c432a2e72 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -494,6 +494,16 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
if exceptionCode is None:
exceptionCode = "return 0;"
+ def handleOptional(template, declType, isOptional):
+ if isOptional:
+ template = "Some(%s)" % template
+ declType = CGWrapper(declType, pre="Option<", post=">")
+ initialValue = "None"
+ else:
+ initialValue = None
+
+ return (template, declType, isOptional, initialValue)
+
# Unfortunately, .capitalize() on a string will lowercase things inside the
# string, which we do not want.
def firstCap(string):
@@ -800,21 +810,16 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
if failureCode is None:
failureCode = 'return 0'
- value = "v"
declType = CGGeneric(builtinNames[type.tag()])
if type.nullable():
declType = CGWrapper(declType, pre="Option<", post=">")
- if isOptional:
- value = "Some(%s)" % value
- declType = CGWrapper(declType, pre="Option<", post=">")
-
#XXXjdm support conversionBehavior here
template = (
"match FromJSValConvertible::from_jsval(cx, ${val}, ()) {\n"
- " Ok(v) => %s,\n"
+ " Ok(v) => v,\n"
" Err(_) => { %s }\n"
- "}" % (value, exceptionCode))
+ "}" % exceptionCode)
if defaultValue is not None:
if isinstance(defaultValue, IDLNullValue):
@@ -835,7 +840,7 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
CGGeneric(template),
CGGeneric(defaultStr)).define()
- return (template, declType, isOptional, "None" if isOptional else None)
+ return handleOptional(template, declType, isOptional)
def instantiateJSToNativeConversionTemplate(templateTuple, replacements,
argcAndIndex=None):