mirror of
https://github.com/servo/servo.git
synced 2025-06-19 14:48:59 +01:00
Remove support for returning values through outparams.
This commit is contained in:
parent
b84bd4c894
commit
c7e09c0570
1 changed files with 12 additions and 19 deletions
|
@ -1225,36 +1225,36 @@ def memberIsCreator(member):
|
||||||
def getRetvalDeclarationForType(returnType, descriptorProvider):
|
def getRetvalDeclarationForType(returnType, descriptorProvider):
|
||||||
if returnType is None or returnType.isVoid():
|
if returnType is None or returnType.isVoid():
|
||||||
# Nothing to declare
|
# Nothing to declare
|
||||||
return None, False
|
return None
|
||||||
if returnType.isPrimitive() and returnType.tag() in builtinNames:
|
if returnType.isPrimitive() and returnType.tag() in builtinNames:
|
||||||
result = CGGeneric(builtinNames[returnType.tag()])
|
result = CGGeneric(builtinNames[returnType.tag()])
|
||||||
if returnType.nullable():
|
if returnType.nullable():
|
||||||
result = CGWrapper(result, pre="Option<", post=">")
|
result = CGWrapper(result, pre="Option<", post=">")
|
||||||
return result, False
|
return result
|
||||||
if returnType.isString():
|
if returnType.isString():
|
||||||
result = CGGeneric("DOMString")
|
result = CGGeneric("DOMString")
|
||||||
if returnType.nullable():
|
if returnType.nullable():
|
||||||
result = CGWrapper(result, pre="Option<", post=">")
|
result = CGWrapper(result, pre="Option<", post=">")
|
||||||
return result, False
|
return result
|
||||||
if returnType.isEnum():
|
if returnType.isEnum():
|
||||||
if returnType.nullable():
|
if returnType.nullable():
|
||||||
raise TypeError("We don't support nullable enum return values")
|
raise TypeError("We don't support nullable enum return values")
|
||||||
return CGGeneric(returnType.inner.identifier.name), False
|
return CGGeneric(returnType.inner.identifier.name)
|
||||||
if returnType.isGeckoInterface():
|
if returnType.isGeckoInterface():
|
||||||
descriptor = descriptorProvider.getDescriptor(
|
descriptor = descriptorProvider.getDescriptor(
|
||||||
returnType.unroll().inner.identifier.name)
|
returnType.unroll().inner.identifier.name)
|
||||||
result = CGGeneric(descriptor.nativeType)
|
result = CGGeneric(descriptor.nativeType)
|
||||||
if returnType.nullable():
|
if returnType.nullable():
|
||||||
result = CGWrapper(result, pre="Option<", post=">")
|
result = CGWrapper(result, pre="Option<", post=">")
|
||||||
return result, False
|
return result
|
||||||
if returnType.isCallback():
|
if returnType.isCallback():
|
||||||
# XXXbz we're going to assume that callback types are always
|
# XXXbz we're going to assume that callback types are always
|
||||||
# nullable for now.
|
# nullable for now.
|
||||||
return CGGeneric("*JSObject"), False
|
return CGGeneric("*JSObject")
|
||||||
if returnType.isAny():
|
if returnType.isAny():
|
||||||
return CGGeneric("JSVal"), False
|
return CGGeneric("JSVal")
|
||||||
if returnType.isObject() or returnType.isSpiderMonkeyInterface():
|
if returnType.isObject() or returnType.isSpiderMonkeyInterface():
|
||||||
return CGGeneric("*JSObject"), False
|
return CGGeneric("*JSObject")
|
||||||
if returnType.isSequence():
|
if returnType.isSequence():
|
||||||
raise TypeError("We don't support sequence return values")
|
raise TypeError("We don't support sequence return values")
|
||||||
|
|
||||||
|
@ -2420,8 +2420,7 @@ class CGCallGenerator(CGThing):
|
||||||
|
|
||||||
isFallible = errorReport is not None
|
isFallible = errorReport is not None
|
||||||
|
|
||||||
(result, resultOutParam) = getRetvalDeclarationForType(returnType,
|
result = getRetvalDeclarationForType(returnType, descriptorProvider)
|
||||||
descriptorProvider)
|
|
||||||
|
|
||||||
args = CGList([CGGeneric(arg) for arg in argsPre], ", ")
|
args = CGList([CGGeneric(arg) for arg in argsPre], ", ")
|
||||||
for (a, name) in arguments:
|
for (a, name) in arguments:
|
||||||
|
@ -2437,10 +2436,6 @@ class CGCallGenerator(CGThing):
|
||||||
name = "&" + name
|
name = "&" + name
|
||||||
args.append(CGGeneric(name))
|
args.append(CGGeneric(name))
|
||||||
|
|
||||||
# Return values that go in outparams go here
|
|
||||||
if resultOutParam:
|
|
||||||
args.append(CGGeneric("result"))
|
|
||||||
|
|
||||||
needsCx = (typeNeedsCx(returnType, True) or
|
needsCx = (typeNeedsCx(returnType, True) or
|
||||||
any(typeNeedsCx(a.type) for (a, _) in arguments))
|
any(typeNeedsCx(a.type) for (a, _) in arguments))
|
||||||
|
|
||||||
|
@ -2467,7 +2462,7 @@ class CGCallGenerator(CGThing):
|
||||||
|
|
||||||
if isFallible:
|
if isFallible:
|
||||||
call = CGWrapper(call, pre="result_fallible = ")
|
call = CGWrapper(call, pre="result_fallible = ")
|
||||||
elif result is not None and not resultOutParam:
|
elif result is not None:
|
||||||
call = CGWrapper(call, pre="result = ")
|
call = CGWrapper(call, pre="result = ")
|
||||||
|
|
||||||
call = CGWrapper(call)
|
call = CGWrapper(call)
|
||||||
|
@ -2477,7 +2472,7 @@ class CGCallGenerator(CGThing):
|
||||||
self.cgRoot.append(CGGeneric("if (result_fallible.is_err()) {"))
|
self.cgRoot.append(CGGeneric("if (result_fallible.is_err()) {"))
|
||||||
self.cgRoot.append(CGIndenter(errorReport))
|
self.cgRoot.append(CGIndenter(errorReport))
|
||||||
self.cgRoot.append(CGGeneric("}"))
|
self.cgRoot.append(CGGeneric("}"))
|
||||||
if result is not None and not resultOutParam:
|
if result is not None:
|
||||||
self.cgRoot.append(CGGeneric("result = result_fallible.unwrap();"))
|
self.cgRoot.append(CGGeneric("result = result_fallible.unwrap();"))
|
||||||
|
|
||||||
def define(self):
|
def define(self):
|
||||||
|
@ -2790,8 +2785,6 @@ class CGSpecializedGetter(CGAbstractExternMethod):
|
||||||
nativeName = MakeNativeName(name)
|
nativeName = MakeNativeName(name)
|
||||||
extraPre = ''
|
extraPre = ''
|
||||||
argsPre = []
|
argsPre = []
|
||||||
(_, resultOutParam) = getRetvalDeclarationForType(self.attr.type,
|
|
||||||
self.descriptor)
|
|
||||||
infallible = ('infallible' in
|
infallible = ('infallible' in
|
||||||
self.descriptor.getExtendedAttributes(self.attr,
|
self.descriptor.getExtendedAttributes(self.attr,
|
||||||
getter=True))
|
getter=True))
|
||||||
|
@ -2799,7 +2792,7 @@ class CGSpecializedGetter(CGAbstractExternMethod):
|
||||||
abstractName = re.sub(r'<\w+>', '', self.descriptor.nativeType)
|
abstractName = re.sub(r'<\w+>', '', self.descriptor.nativeType)
|
||||||
extraPre = ' let mut abstract_this = %s::from_box(this);\n' % abstractName
|
extraPre = ' let mut abstract_this = %s::from_box(this);\n' % abstractName
|
||||||
argsPre = ['&mut abstract_this']
|
argsPre = ['&mut abstract_this']
|
||||||
if resultOutParam or self.attr.type.nullable() or not infallible:
|
if self.attr.type.nullable() or not infallible:
|
||||||
nativeName = "Get" + nativeName
|
nativeName = "Get" + nativeName
|
||||||
return CGWrapper(CGIndenter(CGGetterCall(argsPre, self.attr.type, nativeName,
|
return CGWrapper(CGIndenter(CGGetterCall(argsPre, self.attr.type, nativeName,
|
||||||
self.descriptor, self.attr)),
|
self.descriptor, self.attr)),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue