aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-05-13 14:20:00 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2016-10-11 19:44:32 +0200
commit0b3ab875f4c99f63d6caa9be528890ad98b1b2b7 (patch)
tree4139e748dd73a729f5a84c277e90f3f15e0df85a /components/script/dom/bindings/codegen/CodegenRust.py
parent51bcf516c831f60a6fc05d970df5fad99730558e (diff)
downloadservo-0b3ab875f4c99f63d6caa9be528890ad98b1b2b7.tar.gz
servo-0b3ab875f4c99f63d6caa9be528890ad98b1b2b7.zip
Remove intrinsic Root::r()
Diffstat (limited to 'components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py23
1 files changed, 11 insertions, 12 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index d4c12f8c2ae..e66ff0ab858 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -3256,12 +3256,7 @@ class CGPerSignatureCall(CGThing):
return "argc"
def getArguments(self):
- def process(arg, i):
- argVal = "arg" + str(i)
- if arg.type.isGeckoInterface() and not arg.type.unroll().inner.isCallback():
- argVal += ".r()"
- return argVal
- return [(a, process(a, i)) for (i, a) in enumerate(self.arguments)]
+ return [(a, process_arg("arg" + str(i), a)) for (i, a) in enumerate(self.arguments)]
def isFallible(self):
return 'infallible' not in self.extendedAttributes
@@ -4651,12 +4646,7 @@ class CGProxySpecialOperation(CGPerSignatureCall):
self.cgRoot.prepend(CGGeneric("rooted!(in(cx) let value = desc.value);"))
def getArguments(self):
- def process(arg):
- argVal = arg.identifier.name
- if arg.type.isGeckoInterface() and not arg.type.unroll().inner.isCallback():
- argVal += ".r()"
- return argVal
- args = [(a, process(a)) for a in self.arguments]
+ args = [(a, process_arg(a.identifier.name, a)) for a in self.arguments]
return args
def wrap_return_value(self):
@@ -6775,6 +6765,15 @@ def camel_to_upper_snake(s):
return "_".join(m.group(0).upper() for m in re.finditer("[A-Z][a-z]*", s))
+def process_arg(expr, arg):
+ if arg.type.isGeckoInterface() and not arg.type.unroll().inner.isCallback():
+ if arg.type.nullable() or arg.type.isSequence() or arg.optional:
+ expr += ".r()"
+ else:
+ expr = "&" + expr
+ return expr
+
+
class GlobalGenRoots():
"""
Roots for global codegen.