mirror of
https://github.com/servo/servo.git
synced 2025-08-04 05:00:08 +01:00
Rewrite the interface unwrapping to return an expression.
This commit is contained in:
parent
0745d656a3
commit
a9ffff9215
1 changed files with 7 additions and 9 deletions
|
@ -553,13 +553,13 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
|
||||||
if type.nullable():
|
if type.nullable():
|
||||||
templateBody += (
|
templateBody += (
|
||||||
"} else if (${val}).is_null_or_undefined() {\n"
|
"} else if (${val}).is_null_or_undefined() {\n"
|
||||||
" ${declName} = None;\n")
|
" None\n")
|
||||||
templateBody += (
|
templateBody += (
|
||||||
"} else {\n" +
|
"} else {\n" +
|
||||||
CGIndenter(onFailureNotAnObject(failureCode)).define() +
|
CGIndenter(onFailureNotAnObject(failureCode)).define() +
|
||||||
"}")
|
"}")
|
||||||
if type.nullable():
|
if type.nullable():
|
||||||
templateBody = handleDefaultNull(templateBody, "${declName} = None;")
|
templateBody = handleDefaultNull(templateBody, "None")
|
||||||
else:
|
else:
|
||||||
assert(defaultValue is None)
|
assert(defaultValue is None)
|
||||||
|
|
||||||
|
@ -609,11 +609,11 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
|
||||||
if descriptor.interface.isCallback():
|
if descriptor.interface.isCallback():
|
||||||
name = descriptor.nativeType
|
name = descriptor.nativeType
|
||||||
declType = CGGeneric("Option<%s>" % name);
|
declType = CGGeneric("Option<%s>" % name);
|
||||||
conversion = ("${declName} = Some(%s::new((${val}).to_object()));" % name)
|
conversion = ("Some(%s::new((${val}).to_object()))" % name)
|
||||||
|
|
||||||
template = wrapObjectTemplate(conversion, isDefinitelyObject, type,
|
template = wrapObjectTemplate(conversion, isDefinitelyObject, type,
|
||||||
failureCode)
|
failureCode)
|
||||||
return (template, declType, None, isOptional, None)
|
return ("${declName} = " + template + ";", declType, None, isOptional, None)
|
||||||
|
|
||||||
templateBody = ""
|
templateBody = ""
|
||||||
if descriptor.interface.isConsequential():
|
if descriptor.interface.isConsequential():
|
||||||
|
@ -621,19 +621,17 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
|
||||||
"argument" % descriptor.interface.identifier.name)
|
"argument" % descriptor.interface.identifier.name)
|
||||||
|
|
||||||
|
|
||||||
templateBody = "${declName} = "
|
|
||||||
if failureCode is not None:
|
if failureCode is not None:
|
||||||
templateBody += str(CastableObjectUnwrapper(
|
templateBody = str(CastableObjectUnwrapper(
|
||||||
descriptor,
|
descriptor,
|
||||||
"(${val}).to_object()",
|
"(${val}).to_object()",
|
||||||
failureCode,
|
failureCode,
|
||||||
isOptional or type.nullable()))
|
isOptional or type.nullable()))
|
||||||
else:
|
else:
|
||||||
templateBody += str(FailureFatalCastableObjectUnwrapper(
|
templateBody = str(FailureFatalCastableObjectUnwrapper(
|
||||||
descriptor,
|
descriptor,
|
||||||
"(${val}).to_object()",
|
"(${val}).to_object()",
|
||||||
isOptional or type.nullable()))
|
isOptional or type.nullable()))
|
||||||
templateBody += ";\n"
|
|
||||||
|
|
||||||
templateBody = wrapObjectTemplate(templateBody, isDefinitelyObject,
|
templateBody = wrapObjectTemplate(templateBody, isDefinitelyObject,
|
||||||
type, failureCode)
|
type, failureCode)
|
||||||
|
@ -642,7 +640,7 @@ def getJSToNativeConversionTemplate(type, descriptorProvider, failureCode=None,
|
||||||
if type.nullable() or isOptional:
|
if type.nullable() or isOptional:
|
||||||
declType = CGWrapper(declType, pre="Option<", post=">")
|
declType = CGWrapper(declType, pre="Option<", post=">")
|
||||||
|
|
||||||
return (templateBody, declType, None, isOptional, "None" if isOptional else None)
|
return ("${declName} = " + templateBody + ";", declType, None, isOptional, "None" if isOptional else None)
|
||||||
|
|
||||||
if type.isSpiderMonkeyInterface():
|
if type.isSpiderMonkeyInterface():
|
||||||
raise TypeError("Can't handle SpiderMonkey interface arguments yet")
|
raise TypeError("Can't handle SpiderMonkey interface arguments yet")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue