mirror of
https://github.com/servo/servo.git
synced 2025-06-24 17:14:33 +01:00
Clean up TrySetTo interface to avoid mutable outrefs.
This commit is contained in:
parent
d590a327bd
commit
9f05f70754
1 changed files with 9 additions and 12 deletions
|
@ -726,7 +726,7 @@ for (uint32_t i = 0; i < length; ++i) {
|
||||||
name = memberType.inner.identifier.name
|
name = memberType.inner.identifier.name
|
||||||
else:
|
else:
|
||||||
name = memberType.name
|
name = memberType.name
|
||||||
interfaceObject.append(CGGeneric("({failed = !%s.TrySetTo%s(cx, ${val}, ${valPtr}, &mut tryNext); failed}) || !tryNext" % (unionArgumentObj, name)))
|
interfaceObject.append(CGGeneric("{res = %s.TrySetTo%s(cx, ${val}, ${valPtr}); res.is_err() || !res.unwrap()}" % (unionArgumentObj, name)))
|
||||||
names.append(name)
|
names.append(name)
|
||||||
interfaceObject = CGWrapper(CGList(interfaceObject, " ||\n"), pre="done = ", post=";\n", reindent=True)
|
interfaceObject = CGWrapper(CGList(interfaceObject, " ||\n"), pre="done = ", post=";\n", reindent=True)
|
||||||
else:
|
else:
|
||||||
|
@ -737,7 +737,7 @@ for (uint32_t i = 0; i < length; ++i) {
|
||||||
assert len(arrayObjectMemberTypes) == 1
|
assert len(arrayObjectMemberTypes) == 1
|
||||||
memberType = arrayObjectMemberTypes[0]
|
memberType = arrayObjectMemberTypes[0]
|
||||||
name = memberType.name
|
name = memberType.name
|
||||||
arrayObject = CGGeneric("done = ({failed = !%s.TrySetTo%s(cx, ${val}, ${valPtr}, &mut tryNext); failed}) || !tryNext;" % (unionArgumentObj, name))
|
arrayObject = CGGeneric("done = {res = %s.TrySetTo%s(cx, ${val}, ${valPtr}); res.is_err() || !res.unwrap()};" % (unionArgumentObj, name))
|
||||||
# XXX Now we're supposed to check for an array or a platform object
|
# XXX Now we're supposed to check for an array or a platform object
|
||||||
# that supports indexed properties... skip that last for now. It's a
|
# that supports indexed properties... skip that last for now. It's a
|
||||||
# bit of a pain.
|
# bit of a pain.
|
||||||
|
@ -767,7 +767,7 @@ for (uint32_t i = 0; i < length; ++i) {
|
||||||
assert len(callbackMemberTypes) == 1
|
assert len(callbackMemberTypes) == 1
|
||||||
memberType = callbackMemberTypes[0]
|
memberType = callbackMemberTypes[0]
|
||||||
name = memberType.name
|
name = memberType.name
|
||||||
callbackObject = CGGeneric("done = ({failed = !%s.TrySetTo%s(cx, ${val}, ${valPtr}, &mut tryNext); failed}) || !tryNext;" % (unionArgumentObj, name))
|
callbackObject = CGGeneric("done = {res = %s.TrySetTo%s(cx, ${val}, ${valPtr}); res.is_err() || !res.unwrap()};" % (unionArgumentObj, name))
|
||||||
names.append(name)
|
names.append(name)
|
||||||
else:
|
else:
|
||||||
callbackObject = None
|
callbackObject = None
|
||||||
|
@ -837,7 +837,7 @@ for (uint32_t i = 0; i < length; ++i) {
|
||||||
name = memberType.inner.identifier.name
|
name = memberType.inner.identifier.name
|
||||||
else:
|
else:
|
||||||
name = memberType.name
|
name = memberType.name
|
||||||
other = CGGeneric("done = ({failed = !%s.TrySetTo%s(cx, ${val}, ${valPtr}, &mut tryNext); failed}) || !tryNext;" % (unionArgumentObj, name))
|
other = CGGeneric("done = {res = %s.TrySetTo%s(cx, ${val}, ${valPtr}); res.is_err() || !res.unwrap()};" % (unionArgumentObj, name))
|
||||||
names.append(name)
|
names.append(name)
|
||||||
if hasObjectTypes:
|
if hasObjectTypes:
|
||||||
other = CGWrapper(CGIndenter(other), "{\n", post="\n}")
|
other = CGWrapper(CGIndenter(other), "{\n", post="\n}")
|
||||||
|
@ -851,9 +851,8 @@ for (uint32_t i = 0; i < length; ++i) {
|
||||||
other = None
|
other = None
|
||||||
|
|
||||||
templateBody = CGWrapper(templateBody, pre="let mut done = false;\n"
|
templateBody = CGWrapper(templateBody, pre="let mut done = false;\n"
|
||||||
"let mut failed = false;\n"
|
"let mut res = Ok(true);\n")
|
||||||
"let mut tryNext = false;\n")
|
throw = CGGeneric("if res.is_err() {\n"
|
||||||
throw = CGGeneric("if failed {\n"
|
|
||||||
" return 0;\n"
|
" return 0;\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"if !done {\n"
|
"if !done {\n"
|
||||||
|
@ -3784,8 +3783,7 @@ def getUnionTypeTemplateVars(type, descriptorProvider):
|
||||||
typeName = "/*" + type.name + "*/"
|
typeName = "/*" + type.name + "*/"
|
||||||
|
|
||||||
tryNextCode = """{
|
tryNextCode = """{
|
||||||
*tryNext = true;
|
return Ok(true);
|
||||||
return true;
|
|
||||||
}"""
|
}"""
|
||||||
if type.isGeckoInterface():
|
if type.isGeckoInterface():
|
||||||
tryNextCode = ("""/*if (mUnion.mType != mUnion.eUninitialized) {
|
tryNextCode = ("""/*if (mUnion.mType != mUnion.eUninitialized) {
|
||||||
|
@ -3818,10 +3816,9 @@ def getUnionTypeTemplateVars(type, descriptorProvider):
|
||||||
)
|
)
|
||||||
jsConversion = CGWrapper(CGGeneric(jsConversion),
|
jsConversion = CGWrapper(CGGeneric(jsConversion),
|
||||||
post="\n"
|
post="\n"
|
||||||
"return true;")
|
"return Ok(true);")
|
||||||
setter = CGWrapper(CGIndenter(jsConversion),
|
setter = CGWrapper(CGIndenter(jsConversion),
|
||||||
pre="pub fn TrySetTo" + name + "(&mut self, cx: *JSContext, value: JSVal, pvalue: *JSVal, tryNext: &mut bool) -> bool {\n"
|
pre="pub fn TrySetTo" + name + "(&mut self, cx: *JSContext, value: JSVal, pvalue: *JSVal) -> Result<bool,()> {\n",
|
||||||
" *tryNext = false;\n",
|
|
||||||
post="\n"
|
post="\n"
|
||||||
"}")
|
"}")
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue