From 0b3ab875f4c99f63d6caa9be528890ad98b1b2b7 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Fri, 13 May 2016 14:20:00 +0200 Subject: Remove intrinsic Root::r() --- .../script/dom/bindings/codegen/CodegenRust.py | 23 +++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'components/script/dom/bindings/codegen/CodegenRust.py') 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. -- cgit v1.2.3