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.py149
1 files changed, 71 insertions, 78 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py
index 14a3cc1829e..a749bbce65e 100644
--- a/src/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/src/components/script/dom/bindings/codegen/CodegenRust.py
@@ -213,7 +213,7 @@ class CGMethodCall(CGThing):
# Doesn't matter which of the possible signatures we use, since
# they all have the same types up to that point; just use
# possibleSignatures[0]
- caseBody = [CGGeneric("let argv_start = JS_ARGV(cx, vp as *JSVal);")]
+ caseBody = [CGGeneric("let argv_start = JS_ARGV(cx, vp);")]
caseBody.extend([ CGArgumentConverter(possibleSignatures[0][1][i],
i, "argv_start", "argc",
descriptor) for i in
@@ -960,11 +960,11 @@ def getRetvalDeclarationForType(returnType, descriptorProvider):
if returnType.isCallback():
# XXXbz we're going to assume that callback types are always
# nullable for now.
- return CGGeneric("*JSObject")
+ return CGGeneric("*mut JSObject")
if returnType.isAny():
return CGGeneric("JSVal")
if returnType.isObject() or returnType.isSpiderMonkeyInterface():
- return CGGeneric("*JSObject")
+ return CGGeneric("*mut JSObject")
if returnType.isSequence():
raise TypeError("We don't support sequence return values")
@@ -1492,14 +1492,7 @@ static PrototypeClass: JSClass = JSClass {
hasInstance: None,
construct: None,
trace: None,
- reserved: (0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 05
- 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 10
- 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 15
- 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 20
- 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 25
- 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 30
- 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 35
- 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void) // 40
+ reserved: [0 as *mut libc::c_void, ..40]
};
""" % (len(self.descriptor.interface.identifier.name + "Prototype") + 1,
str_to_const_array(self.descriptor.interface.identifier.name + "Prototype"))
@@ -1726,12 +1719,12 @@ def CreateBindingJSObject(descriptor, parent=None):
create += """
let js_info = aScope.deref().page().js_info();
let handler = js_info.get_ref().dom_static.proxy_handlers.deref().get(&(PrototypeList::id::%s as uint));
- let private = PrivateValue(squirrel_away_unique(aObject) as *libc::c_void);
+ let mut private = PrivateValue(squirrel_away_unique(aObject) as *libc::c_void);
let obj = with_compartment(aCx, proto, || {
NewProxyObject(aCx, *handler,
&private,
proto, %s,
- ptr::null(), ptr::null())
+ ptr::mut_null(), ptr::mut_null())
});
assert!(obj.is_not_null());
@@ -1754,10 +1747,10 @@ class CGWrapMethod(CGAbstractMethod):
def __init__(self, descriptor):
assert descriptor.interface.hasInterfacePrototypeObject()
if not descriptor.createGlobal:
- args = [Argument('*JSContext', 'aCx'), Argument('&JSRef<Window>', 'aScope'),
+ args = [Argument('*mut JSContext', 'aCx'), Argument('&JSRef<Window>', 'aScope'),
Argument("Box<%s>" % descriptor.concreteType, 'aObject', mutable=True)]
else:
- args = [Argument('*JSContext', 'aCx'),
+ args = [Argument('*mut JSContext', 'aCx'),
Argument("Box<%s>" % descriptor.concreteType, 'aObject', mutable=True)]
retval = 'JS<%s>' % descriptor.concreteType
CGAbstractMethod.__init__(self, descriptor, 'Wrap', retval, args, pub=True)
@@ -1859,9 +1852,9 @@ class CGCreateInterfaceObjectsMethod(CGAbstractMethod):
properties should be a PropertyArrays instance.
"""
def __init__(self, descriptor, properties):
- args = [Argument('*JSContext', 'aCx'), Argument('*JSObject', 'aGlobal'),
- Argument('*JSObject', 'aReceiver')]
- CGAbstractMethod.__init__(self, descriptor, 'CreateInterfaceObjects', '*JSObject', args)
+ args = [Argument('*mut JSContext', 'aCx'), Argument('*mut JSObject', 'aGlobal'),
+ Argument('*mut JSObject', 'aReceiver')]
+ CGAbstractMethod.__init__(self, descriptor, 'CreateInterfaceObjects', '*mut JSObject', args)
self.properties = properties
def definition_body(self):
protoChain = self.descriptor.prototypeChain
@@ -1894,9 +1887,9 @@ class CGCreateInterfaceObjectsMethod(CGAbstractMethod):
else:
prefCache = None
- getParentProto = ("let parentProto: *JSObject = %s;\n" +
+ getParentProto = ("let parentProto: *mut JSObject = %s;\n" +
"if parentProto.is_null() {\n" +
- " return ptr::null();\n" +
+ " return ptr::mut_null();\n" +
"}\n") % getParentProto
if self.descriptor.interface.ctor():
@@ -1956,10 +1949,10 @@ class CGGetPerInterfaceObject(CGAbstractMethod):
constructor object).
"""
def __init__(self, descriptor, name, idPrefix="", pub=False):
- args = [Argument('*JSContext', 'aCx'), Argument('*JSObject', 'aGlobal'),
- Argument('*JSObject', 'aReceiver')]
+ args = [Argument('*mut JSContext', 'aCx'), Argument('*mut JSObject', 'aGlobal'),
+ Argument('*mut JSObject', 'aReceiver')]
CGAbstractMethod.__init__(self, descriptor, name,
- '*JSObject', args, pub=pub)
+ '*mut JSObject', args, pub=pub)
self.id = idPrefix + "id::" + self.descriptor.name
def definition_body(self):
return """
@@ -1973,10 +1966,10 @@ class CGGetPerInterfaceObject(CGAbstractMethod):
assert!(((*JS_GetClass(aGlobal)).flags & JSCLASS_DOM_GLOBAL) != 0);
/* Check to see whether the interface objects are already installed */
- let protoOrIfaceArray: *mut *JSObject = GetProtoOrIfaceArray(aGlobal) as *mut *JSObject;
- let cachedObject: *JSObject = *protoOrIfaceArray.offset(%s as int);
+ let protoOrIfaceArray = GetProtoOrIfaceArray(aGlobal);
+ let cachedObject: *mut JSObject = *protoOrIfaceArray.offset(%s as int);
if cachedObject.is_null() {
- let tmp: *JSObject = CreateInterfaceObjects(aCx, aGlobal, aReceiver);
+ let tmp: *mut JSObject = CreateInterfaceObjects(aCx, aGlobal, aReceiver);
*protoOrIfaceArray.offset(%s as int) = tmp;
tmp
} else {
@@ -2222,7 +2215,7 @@ class CGPerSignatureCall(CGThing):
def getArgv(self):
return "argv" if self.argCount > 0 else ""
def getArgvDecl(self):
- return "\nlet argv = JS_ARGV(cx, vp as *JSVal);\n"
+ return "\nlet argv = JS_ARGV(cx, vp);\n"
def getArgc(self):
return "argc"
def getArguments(self):
@@ -2361,7 +2354,7 @@ class CGAbstractBindingMethod(CGAbstractExternMethod):
FakeCastableDescriptor(self.descriptor),
"obj", self.unwrapFailureCode))
unwrapThis = CGIndenter(
- CGGeneric("let obj: *JSObject = JS_THIS_OBJECT(cx, vp as *mut JSVal);\n"
+ CGGeneric("let obj: *mut JSObject = JS_THIS_OBJECT(cx, vp as *mut JSVal);\n"
"if obj.is_null() {\n"
" return false as JSBool;\n"
"}\n"
@@ -2377,14 +2370,14 @@ class CGGenericMethod(CGAbstractBindingMethod):
A class for generating the C++ code for an IDL method..
"""
def __init__(self, descriptor):
- args = [Argument('*JSContext', 'cx'), Argument('libc::c_uint', 'argc'),
+ args = [Argument('*mut JSContext', 'cx'), Argument('libc::c_uint', 'argc'),
Argument('*mut JSVal', 'vp')]
CGAbstractBindingMethod.__init__(self, descriptor, 'genericMethod', args)
def generate_code(self):
return CGIndenter(CGGeneric(
- "let _info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, &*vp));\n"
- "return CallJitMethodOp(_info, cx, obj, this.unsafe_get() as *libc::c_void, argc, &*vp);"))
+ "let _info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, vp));\n"
+ "return CallJitMethodOp(_info, cx, obj, this.unsafe_get() as *libc::c_void, argc, vp);"))
class CGSpecializedMethod(CGAbstractExternMethod):
"""
@@ -2394,7 +2387,7 @@ class CGSpecializedMethod(CGAbstractExternMethod):
def __init__(self, descriptor, method):
self.method = method
name = method.identifier.name
- args = [Argument('*JSContext', 'cx'), Argument('JSHandleObject', '_obj'),
+ args = [Argument('*mut JSContext', 'cx'), Argument('JSHandleObject', '_obj'),
Argument('*mut %s' % descriptor.concreteType, 'this'),
Argument('libc::c_uint', 'argc'), Argument('*mut JSVal', 'vp')]
CGAbstractExternMethod.__init__(self, descriptor, name, 'JSBool', args)
@@ -2411,7 +2404,7 @@ class CGGenericGetter(CGAbstractBindingMethod):
A class for generating the C++ code for an IDL attribute getter.
"""
def __init__(self, descriptor, lenientThis=False):
- args = [Argument('*JSContext', 'cx'), Argument('libc::c_uint', 'argc'),
+ args = [Argument('*mut JSContext', 'cx'), Argument('libc::c_uint', 'argc'),
Argument('*mut JSVal', 'vp')]
if lenientThis:
name = "genericLenientGetter"
@@ -2427,8 +2420,8 @@ class CGGenericGetter(CGAbstractBindingMethod):
def generate_code(self):
return CGIndenter(CGGeneric(
- "let info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, &*vp));\n"
- "return CallJitPropertyOp(info, cx, obj, this.unsafe_get() as *libc::c_void, &*vp);\n"))
+ "let info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, vp));\n"
+ "return CallJitPropertyOp(info, cx, obj, this.unsafe_get() as *libc::c_void, vp);\n"))
class CGSpecializedGetter(CGAbstractExternMethod):
"""
@@ -2438,7 +2431,7 @@ class CGSpecializedGetter(CGAbstractExternMethod):
def __init__(self, descriptor, attr):
self.attr = attr
name = 'get_' + attr.identifier.name
- args = [ Argument('*JSContext', 'cx'),
+ args = [ Argument('*mut JSContext', 'cx'),
Argument('JSHandleObject', '_obj'),
Argument('*mut %s' % descriptor.concreteType, 'this'),
Argument('*mut JSVal', 'vp') ]
@@ -2462,7 +2455,7 @@ class CGGenericSetter(CGAbstractBindingMethod):
A class for generating the Rust code for an IDL attribute setter.
"""
def __init__(self, descriptor, lenientThis=False):
- args = [Argument('*JSContext', 'cx'), Argument('libc::c_uint', 'argc'),
+ args = [Argument('*mut JSContext', 'cx'), Argument('libc::c_uint', 'argc'),
Argument('*mut JSVal', 'vp')]
if lenientThis:
name = "genericLenientSetter"
@@ -2477,9 +2470,9 @@ class CGGenericSetter(CGAbstractBindingMethod):
def generate_code(self):
return CGIndenter(CGGeneric(
- "let undef = UndefinedValue();\n"
- "let argv: *JSVal = if argc != 0 { JS_ARGV(cx, vp as *JSVal) } else { &undef as *JSVal };\n"
- "let info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, vp as *JSVal));\n"
+ "let mut undef = UndefinedValue();\n"
+ "let argv: *mut JSVal = if argc != 0 { JS_ARGV(cx, vp) } else { &mut undef as *mut JSVal };\n"
+ "let info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, vp));\n"
"if CallJitPropertyOp(info, cx, obj, this.unsafe_get() as *libc::c_void, argv) == 0 {\n"
" return 0;\n"
"}\n"
@@ -2494,7 +2487,7 @@ class CGSpecializedSetter(CGAbstractExternMethod):
def __init__(self, descriptor, attr):
self.attr = attr
name = 'set_' + attr.identifier.name
- args = [ Argument('*JSContext', 'cx'),
+ args = [ Argument('*mut JSContext', 'cx'),
Argument('JSHandleObject', '_obj'),
Argument('*mut %s' % descriptor.concreteType, 'this'),
Argument('*mut JSVal', 'argv')]
@@ -2604,7 +2597,7 @@ pub static strings: &'static [&'static str] = &[
];
impl ToJSValConvertible for valuelist {
- fn to_jsval(&self, cx: *JSContext) -> JSVal {
+ fn to_jsval(&self, cx: *mut JSContext) -> JSVal {
strings[*self as uint].to_owned().to_jsval(cx)
}
}
@@ -2819,7 +2812,7 @@ class CGUnionConversionStruct(CGThing):
"Err(())" % ", ".join(names)))
method = CGWrapper(
CGIndenter(CGList(conversions, "\n\n")),
- pre="fn from_jsval(cx: *JSContext, value: JSVal, _option: ()) -> Result<%s, ()> {\n" % self.type,
+ pre="fn from_jsval(cx: *mut JSContext, value: JSVal, _option: ()) -> Result<%s, ()> {\n" % self.type,
post="\n}")
return CGWrapper(
CGIndenter(method),
@@ -2833,7 +2826,7 @@ class CGUnionConversionStruct(CGThing):
return CGWrapper(
CGIndenter(jsConversion, 4),
- pre="fn TryConvertTo%s(cx: *JSContext, value: JSVal) -> %s {\n" % (t.name, returnType),
+ pre="fn TryConvertTo%s(cx: *mut JSContext, value: JSVal) -> %s {\n" % (t.name, returnType),
post="\n}")
def define(self):
@@ -3394,7 +3387,7 @@ class CGProxyNamedSetter(CGProxySpecialOperation):
class CGProxyUnwrap(CGAbstractMethod):
def __init__(self, descriptor):
- args = [Argument('*JSObject', 'obj')]
+ args = [Argument('*mut JSObject', 'obj')]
CGAbstractMethod.__init__(self, descriptor, "UnwrapProxy", '*mut ' + descriptor.concreteType, args, alwaysInline=True)
def definition_body(self):
@@ -3407,7 +3400,7 @@ class CGProxyUnwrap(CGAbstractMethod):
class CGDOMJSProxyHandler_getOwnPropertyDescriptor(CGAbstractExternMethod):
def __init__(self, descriptor):
- args = [Argument('*JSContext', 'cx'), Argument('*JSObject', 'proxy'),
+ args = [Argument('*mut JSContext', 'cx'), Argument('*mut JSObject', 'proxy'),
Argument('jsid', 'id'), Argument('JSBool', 'set'),
Argument('*mut JSPropertyDescriptor', 'desc')]
CGAbstractExternMethod.__init__(self, descriptor, "getOwnPropertyDescriptor",
@@ -3482,11 +3475,11 @@ class CGDOMJSProxyHandler_getOwnPropertyDescriptor(CGAbstractExternMethod):
else:
namedGet = ""
- return setOrIndexedGet + """let expando: *JSObject = GetExpandoObject(proxy);
+ return setOrIndexedGet + """let expando: *mut JSObject = GetExpandoObject(proxy);
//if (!xpc::WrapperFactory::IsXrayWrapper(proxy) && (expando = GetExpandoObject(proxy))) {
if expando.is_not_null() {
let flags = if set != 0 { JSRESOLVE_ASSIGNING } else { 0 } | JSRESOLVE_QUALIFIED;
- if JS_GetPropertyDescriptorById(cx, expando, id, flags, desc as *JSPropertyDescriptor) == 0 {
+ if JS_GetPropertyDescriptorById(cx, expando, id, flags, desc) == 0 {
return 0;
}
if (*desc).obj.is_not_null() {
@@ -3496,7 +3489,7 @@ if expando.is_not_null() {
}
}
""" + namedGet + """
-(*desc).obj = ptr::null();
+(*desc).obj = ptr::mut_null();
return 1;"""
def definition_body(self):
@@ -3504,7 +3497,7 @@ return 1;"""
class CGDOMJSProxyHandler_defineProperty(CGAbstractExternMethod):
def __init__(self, descriptor):
- args = [Argument('*JSContext', 'cx'), Argument('*JSObject', 'proxy'),
+ args = [Argument('*mut JSContext', 'cx'), Argument('*mut JSObject', 'proxy'),
Argument('jsid', 'id'),
Argument('*JSPropertyDescriptor', 'desc')]
CGAbstractExternMethod.__init__(self, descriptor, "defineProperty", "JSBool", args)
@@ -3562,7 +3555,7 @@ class CGDOMJSProxyHandler_defineProperty(CGAbstractExternMethod):
class CGDOMJSProxyHandler_hasOwn(CGAbstractExternMethod):
def __init__(self, descriptor):
- args = [Argument('*JSContext', 'cx'), Argument('*JSObject', 'proxy'),
+ args = [Argument('*mut JSContext', 'cx'), Argument('*mut JSObject', 'proxy'),
Argument('jsid', 'id'), Argument('*mut JSBool', 'bp')]
CGAbstractExternMethod.__init__(self, descriptor, "hasOwn", "JSBool", args)
self.descriptor = descriptor
@@ -3597,10 +3590,10 @@ class CGDOMJSProxyHandler_hasOwn(CGAbstractExternMethod):
else:
named = ""
- return indexed + """let expando: *JSObject = GetExpandoObject(proxy);
+ return indexed + """let expando: *mut JSObject = GetExpandoObject(proxy);
if expando.is_not_null() {
- let b: JSBool = 1;
- let ok: JSBool = JS_HasPropertyById(cx, expando, id, &b);
+ let mut b: JSBool = 1;
+ let ok: JSBool = JS_HasPropertyById(cx, expando, id, &mut b);
*bp = !!b;
if ok == 0 || *bp != 0 {
return ok;
@@ -3615,21 +3608,21 @@ return 1;"""
class CGDOMJSProxyHandler_get(CGAbstractExternMethod):
def __init__(self, descriptor):
- args = [Argument('*JSContext', 'cx'), Argument('*JSObject', 'proxy'),
- Argument('*JSObject', 'receiver'), Argument('jsid', 'id'),
+ args = [Argument('*mut JSContext', 'cx'), Argument('*mut JSObject', 'proxy'),
+ Argument('*mut JSObject', 'receiver'), Argument('jsid', 'id'),
Argument('*mut JSVal', 'vp')]
CGAbstractExternMethod.__init__(self, descriptor, "get", "JSBool", args)
self.descriptor = descriptor
def getBody(self):
getFromExpando = """let expando = GetExpandoObject(proxy);
if expando.is_not_null() {
- let hasProp = 0;
- if JS_HasPropertyById(cx, expando, id, &hasProp) == 0 {
+ let mut hasProp = 0;
+ if JS_HasPropertyById(cx, expando, id, &mut hasProp) == 0 {
return 0;
}
if hasProp != 0 {
- return JS_GetPropertyById(cx, expando, id, vp as *JSVal);
+ return JS_GetPropertyById(cx, expando, id, vp);
}
}"""
@@ -3671,7 +3664,7 @@ if expando.is_not_null() {
%s
let mut found = false;
-if !GetPropertyOnPrototype(cx, proxy, id, &mut found, vp as *JSVal) {
+if !GetPropertyOnPrototype(cx, proxy, id, &mut found, vp) {
return 0;
}
@@ -3687,8 +3680,8 @@ return 1;""" % (getIndexedOrExpando, getNamed)
class CGDOMJSProxyHandler_obj_toString(CGAbstractExternMethod):
def __init__(self, descriptor):
- args = [Argument('*JSContext', 'cx'), Argument('*JSObject', 'proxy')]
- CGAbstractExternMethod.__init__(self, descriptor, "obj_toString", "*JSString", args)
+ args = [Argument('*mut JSContext', 'cx'), Argument('*mut JSObject', 'proxy')]
+ CGAbstractExternMethod.__init__(self, descriptor, "obj_toString", "*mut JSString", args)
self.descriptor = descriptor
def getBody(self):
stringifier = self.descriptor.operations['Stringifier']
@@ -3750,7 +3743,7 @@ class CGClassTraceHook(CGAbstractClassHook):
A hook to trace through our native object; used for GC and CC
"""
def __init__(self, descriptor):
- args = [Argument('*mut JSTracer', 'trc'), Argument('*JSObject', 'obj')]
+ args = [Argument('*mut JSTracer', 'trc'), Argument('*mut JSObject', 'obj')]
CGAbstractClassHook.__init__(self, descriptor, TRACE_HOOK_NAME, 'void',
args)
@@ -3762,7 +3755,7 @@ class CGClassConstructHook(CGAbstractExternMethod):
JS-visible constructor for our objects
"""
def __init__(self, descriptor):
- args = [Argument('*JSContext', 'cx'), Argument('u32', 'argc'), Argument('*mut JSVal', 'vp')]
+ args = [Argument('*mut JSContext', 'cx'), Argument('u32', 'argc'), Argument('*mut JSVal', 'vp')]
CGAbstractExternMethod.__init__(self, descriptor, CONSTRUCT_HOOK_NAME,
'JSBool', args)
self._ctor = self.descriptor.interface.ctor()
@@ -3777,7 +3770,7 @@ class CGClassConstructHook(CGAbstractExternMethod):
def generate_code(self):
preamble = """
- let global = global_object_for_js_object(JS_CALLEE(cx, &*vp).to_object()).root();
+ let global = global_object_for_js_object(JS_CALLEE(cx, vp).to_object()).root();
let obj = global.deref().reflector().get_jsobject();
"""
nativeName = MakeNativeName(self._ctor.identifier.name)
@@ -3790,7 +3783,7 @@ class CGClassFinalizeHook(CGAbstractClassHook):
A hook for finalize, used to release our native object.
"""
def __init__(self, descriptor):
- args = [Argument('*JSFreeOp', 'fop'), Argument('*JSObject', 'obj')]
+ args = [Argument('*mut JSFreeOp', 'fop'), Argument('*mut JSObject', 'obj')]
CGAbstractClassHook.__init__(self, descriptor, FINALIZE_HOOK_NAME,
'void', args)
@@ -4018,11 +4011,11 @@ class CGDictionary(CGThing):
return string.Template(
"impl<'a, 'b> ${selfName}<'a, 'b> {\n"
" pub fn empty() -> ${selfName} {\n"
- " ${selfName}::new(ptr::null(), NullValue()).unwrap()\n"
+ " ${selfName}::new(ptr::mut_null(), NullValue()).unwrap()\n"
" }\n"
- " pub fn new(cx: *JSContext, val: JSVal) -> Result<${selfName}, ()> {\n"
+ " pub fn new(cx: *mut JSContext, val: JSVal) -> Result<${selfName}, ()> {\n"
" let object = if val.is_null_or_undefined() {\n"
- " ptr::null()\n"
+ " ptr::mut_null()\n"
" } else if val.is_object() {\n"
" val.to_object()\n"
" } else {\n"
@@ -4616,7 +4609,7 @@ class CGCallback(CGClass):
def getConstructors(self):
return [ClassConstructor(
- [Argument("*JSObject", "aCallback")],
+ [Argument("*mut JSObject", "aCallback")],
bodyInHeader=True,
visibility="pub",
explicit=False,
@@ -4629,14 +4622,14 @@ class CGCallback(CGClass):
args = list(method.args)
# Strip out the JSContext*/JSObject* args
# that got added.
- assert args[0].name == "cx" and args[0].argType == "*JSContext"
- assert args[1].name == "aThisObj" and args[1].argType == "*JSObject"
+ assert args[0].name == "cx" and args[0].argType == "*mut JSContext"
+ assert args[1].name == "aThisObj" and args[1].argType == "*mut JSObject"
args = args[2:]
# Record the names of all the arguments, so we can use them when we call
# the private method.
argnames = [arg.name for arg in args]
argnamesWithThis = ["s.GetContext()", "thisObjJS"] + argnames
- argnamesWithoutThis = ["s.GetContext()", "ptr::null()"] + argnames
+ argnamesWithoutThis = ["s.GetContext()", "ptr::mut_null()"] + argnames
# Now that we've recorded the argnames for our call to our private
# method, insert our optional argument for deciding whether the
# CallSetup should re-throw exceptions on aRv.
@@ -4662,7 +4655,7 @@ class CGCallback(CGClass):
bodyWithThis = string.Template(
setupCall+
- "let thisObjJS = WrapCallThisObject(s.GetContext(), ptr::null() /*XXXjdm proper scope*/, thisObj);\n"
+ "let thisObjJS = WrapCallThisObject(s.GetContext(), ptr::mut_null() /*XXXjdm proper scope*/, thisObj);\n"
"if thisObjJS.is_null() {\n"
" return Err(FailureUnknown);\n"
"}\n"
@@ -4919,8 +4912,8 @@ class CallbackMember(CGNativeMember):
return args
# We want to allow the caller to pass in a "this" object, as
# well as a JSContext.
- return [Argument("*JSContext", "cx"),
- Argument("*JSObject", "aThisObj")] + args
+ return [Argument("*mut JSContext", "cx"),
+ Argument("*mut JSObject", "aThisObj")] + args
def getCallSetup(self):
if self.needThisHandling:
@@ -4974,7 +4967,7 @@ class CallbackMethod(CallbackMember):
"getCallable": self.getCallableDecl()
}
if self.argCount > 0:
- replacements["argv"] = "argv.as_ptr()"
+ replacements["argv"] = "argv.as_mut_ptr()"
replacements["argc"] = "argc"
else:
replacements["argv"] = "nullptr"
@@ -4982,7 +4975,7 @@ class CallbackMethod(CallbackMember):
return string.Template("${getCallable}"
"let ok = unsafe {\n"
" JS_CallFunctionValue(cx, ${thisObj}, callable,\n"
- " ${argc}, ${argv}, &rval)\n"
+ " ${argc}, ${argv}, &mut rval)\n"
"};\n"
"if ok == 0 {\n"
" return Err(FailureUnknown);\n"