diff options
author | bors-servo <release+servo@mozilla.com> | 2014-04-17 10:40:15 -0400 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2014-04-17 10:40:15 -0400 |
commit | 3478105da9ed1503a60b2fadf71be95647aa7e9d (patch) | |
tree | 0f095947302f199f52f638bbbe31dc65558abf0b /src/components/script/dom/bindings/codegen/CodegenRust.py | |
parent | 28baa1f4d1402584399abf07869b6bbfdb7c36eb (diff) | |
parent | c9c96d475877ce38ffcc92cdeff76bc93b361dd3 (diff) | |
download | servo-3478105da9ed1503a60b2fadf71be95647aa7e9d.tar.gz servo-3478105da9ed1503a60b2fadf71be95647aa7e9d.zip |
auto merge of #2143 : Ms2ger/servo/optional-primitives, r=jdm
By forgetting the Some(), we caused type inference to convert to Option<T>
for optional non-nullable primitive arguments, and to Option<Option<T>> for
optional nullable primitive arguments (essentially the same thing). This
change brings the primitive codegen in line with the DOMString codegen.
Using distinct types for optionality and nullability would have prevented
this issue.
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index 61efa579241..9470b61fab2 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -855,20 +855,22 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None, if failureCode is None: failureCode = 'return 0' - #XXXjdm support conversionBehavior here - template = ( - "match FromJSValConvertible::from_jsval(cx, ${val}, ()) {\n" - " Ok(v) => ${declName} = v,\n" - " Err(_) => { %s }\n" - "}" % exceptionCode) - + 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) => ${declName} = %s,\n" + " Err(_) => { %s }\n" + "}" % (value, exceptionCode)) + if defaultValue is not None: if isinstance(defaultValue, IDLNullValue): assert type.nullable() |