aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r--src/components/script/dom/bindings/codegen/CodegenRust.py35
1 files changed, 15 insertions, 20 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index d06bfb0bc31..cb9dd703604 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -2013,7 +2013,7 @@ class CGAbstractMethod(CGThing):
self.templateArgs = templateArgs
self.pub = pub;
self.unsafe = unsafe
- def _argstring(self, declare):
+ def _argstring(self):
return ', '.join([a.declare() for a in self.args])
def _template(self):
if self.templateArgs is None:
@@ -2042,12 +2042,12 @@ class CGAbstractMethod(CGThing):
def _unsafe_close(self):
return "\n }\n" if self.unsafe else ""
- def define(self, fromDeclare=False):
- return self.definition_prologue(fromDeclare) + "\n" + self.definition_body() + self.definition_epilogue()
+ def define(self):
+ return self.definition_prologue() + "\n" + self.definition_body() + self.definition_epilogue()
- def definition_prologue(self, fromDeclare):
+ def definition_prologue(self):
return "%sfn %s%s(%s)%s {%s" % (self._decorators(), self.name, self._template(),
- self._argstring(fromDeclare), self._returnType(), self._unsafe_open())
+ self._argstring(), self._returnType(), self._unsafe_open())
def definition_epilogue(self):
return "%s}\n" % self._unsafe_close()
def definition_body(self):
@@ -2060,7 +2060,7 @@ def DOMObjectPointerArg(descriptor):
return DOMObjectPointerType(descriptor) + descriptor.concreteType
def CreateBindingJSObject(descriptor, parent=None):
- create = " let raw: *mut %s = &mut *aObject;\n" % descriptor.concreteType;
+ create = " let mut raw: JS<%s> = JS::from_raw(&mut *aObject);\n" % descriptor.concreteType
if descriptor.proxy:
assert not descriptor.createGlobal
handler = """
@@ -2071,9 +2071,7 @@ def CreateBindingJSObject(descriptor, parent=None):
&PrivateValue(squirrel_away_unboxed(aObject) as *libc::c_void),
proto, %s,
ptr::null(), ptr::null());
- if obj.is_null() {
- return ptr::null();
- }
+ assert!(obj.is_not_null());
""" % (parent)
else:
@@ -2081,9 +2079,7 @@ def CreateBindingJSObject(descriptor, parent=None):
create += " let obj = CreateDOMGlobal(aCx, &Class.base);\n"
else:
create += " let obj = JS_NewObject(aCx, &Class.base, proto, %s);\n" % parent
- create += """ if obj.is_null() {
- return ptr::null();
- }
+ create += """ assert!(obj.is_not_null());
JS_SetReservedSlot(obj, DOM_OBJECT_SLOT as u32,
PrivateValue(squirrel_away_unboxed(aObject) as *libc::c_void));
@@ -2099,7 +2095,8 @@ class CGWrapMethod(CGAbstractMethod):
else:
args = [Argument('*JSContext', 'aCx'),
Argument(DOMObjectPointerArg(descriptor), 'aObject', mutable=True)]
- CGAbstractMethod.__init__(self, descriptor, 'Wrap', '*JSObject', args, pub=True)
+ retval = 'JS<%s>' % descriptor.concreteType
+ CGAbstractMethod.__init__(self, descriptor, 'Wrap', retval, args, pub=True)
def definition_body(self):
if not self.descriptor.createGlobal:
@@ -2110,22 +2107,20 @@ class CGWrapMethod(CGAbstractMethod):
//JSAutoCompartment ac(aCx, scope);
let proto = GetProtoObject(aCx, scope, scope);
- if proto.is_null() {
- return ptr::null();
- }
+ assert!(proto.is_not_null());
%s
- (*raw).mut_reflector().set_jsobject(obj);
+ raw.mut_reflector().set_jsobject(obj);
- return obj;""" % CreateBindingJSObject(self.descriptor, "scope")
+ return raw;""" % CreateBindingJSObject(self.descriptor, "scope")
else:
return """
%s
let proto = GetProtoObject(aCx, obj, obj);
JS_SetPrototype(aCx, obj, proto);
- (*raw).mut_reflector().set_jsobject(obj);
- return obj;""" % CreateBindingJSObject(self.descriptor)
+ raw.mut_reflector().set_jsobject(obj);
+ return raw;""" % CreateBindingJSObject(self.descriptor)
class CGAbstractExternMethod(CGAbstractMethod):
"""