diff options
author | bors-servo <metajack+bors@gmail.com> | 2015-04-07 13:32:02 -0500 |
---|---|---|
committer | bors-servo <metajack+bors@gmail.com> | 2015-04-07 13:32:02 -0500 |
commit | 3fb666cf606f835a9ab9165339e34023ab83a358 (patch) | |
tree | 79c37b585a4f80cc57a09a61c01414317d04a766 /components/script/dom/bindings/codegen | |
parent | c7e210f24c97be1057a652b3644332e7043bfeac (diff) | |
parent | 5570bc3798d422b847766d1dd2b17dbe24e1a933 (diff) | |
download | servo-3fb666cf606f835a9ab9165339e34023ab83a358.tar.gz servo-3fb666cf606f835a9ab9165339e34023ab83a358.zip |
Auto merge of #5569 - Ms2ger:object, r=jdm
Diffstat (limited to 'components/script/dom/bindings/codegen')
-rw-r--r-- | components/script/dom/bindings/codegen/CodegenRust.py | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py index 65cdeb2db99..faa1d5698fc 100644 --- a/components/script/dom/bindings/codegen/CodegenRust.py +++ b/components/script/dom/bindings/codegen/CodegenRust.py @@ -582,7 +582,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, # A helper function for wrapping up the template body for # possibly-nullable objecty stuff - def wrapObjectTemplate(templateBody, isDefinitelyObject, type, + def wrapObjectTemplate(templateBody, nullValue, isDefinitelyObject, type, failureCode=None): if not isDefinitelyObject: # Handle the non-object cases by wrapping up the whole @@ -593,7 +593,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, if type.nullable(): templateBody += ( "} else if (${val}).is_null_or_undefined() {\n" - " None\n") + " %s\n") % nullValue templateBody += ( "} else {\n" + CGIndenter(onFailureNotAnObject(failureCode)).define() + @@ -632,8 +632,9 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, template = "%s::new((${val}).to_object())" % name if type.nullable(): declType = CGWrapper(declType, pre="Option<", post=">") - template = wrapObjectTemplate("Some(%s)" % template, isDefinitelyObject, type, - failureCode) + template = wrapObjectTemplate("Some(%s)" % template, "None", + isDefinitelyObject, type, + failureCode) return handleOptional(template, declType, handleDefaultNull("None")) @@ -675,8 +676,8 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, if isMember: templateBody += ".root()" - templateBody = wrapObjectTemplate(templateBody, isDefinitelyObject, - type, failureCode) + templateBody = wrapObjectTemplate(templateBody, "None", + isDefinitelyObject, type, failureCode) return handleOptional(templateBody, declType, handleDefaultNull("None")) @@ -821,6 +822,7 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, onFailureNotCallable(failureCode)).define() template = wrapObjectTemplate( template, + "None", isDefinitelyObject, type, failureCode) @@ -853,7 +855,15 @@ def getJSToNativeConversionInfo(type, descriptorProvider, failureCode=None, return handleOptional("${val}", declType, default) if type.isObject(): - raise TypeError("Can't handle object arguments yet") + assert not isEnforceRange and not isClamp + + declType = CGGeneric("*mut JSObject") + templateBody = wrapObjectTemplate("${val}.to_object()", + "ptr::null_mut()", + isDefinitelyObject, type, failureCode) + + return handleOptional(templateBody, declType, + handleDefaultNull("ptr::null_mut()")) if type.isDictionary(): if failureCode is not None: |