aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/codegen/CodegenRust.py
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2014-12-25 02:27:43 -0700
committerbors-servo <metajack+bors@gmail.com>2014-12-25 02:27:43 -0700
commit0e6304dcf7fd6712f4455151b55a361de857359d (patch)
tree43e2213c1c6b68027f719b14e58cb441b9fbdb7e /components/script/dom/bindings/codegen/CodegenRust.py
parent57b6dc939734553287a02e3a42241715266995d5 (diff)
parent919f2217f0b67290b8dafd7d9ce53547f61f3d08 (diff)
downloadservo-0e6304dcf7fd6712f4455151b55a361de857359d.tar.gz
servo-0e6304dcf7fd6712f4455151b55a361de857359d.zip
auto merge of #4467 : servo/servo/dataset, r=Ms2ger
Diffstat (limited to 'components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r--components/script/dom/bindings/codegen/CodegenRust.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/components/script/dom/bindings/codegen/CodegenRust.py b/components/script/dom/bindings/codegen/CodegenRust.py
index df7085e64d2..62d23a77118 100644
--- a/components/script/dom/bindings/codegen/CodegenRust.py
+++ b/components/script/dom/bindings/codegen/CodegenRust.py
@@ -2086,20 +2086,23 @@ class CGDefineProxyHandler(CGAbstractMethod):
return CGAbstractMethod.define(self)
def definition_body(self):
+ customDefineProperty = 'defineProperty_'
+ if self.descriptor.operations['IndexedSetter'] or self.descriptor.operations['NamedSetter']:
+ customDefineProperty = 'defineProperty'
body = """\
let traps = ProxyTraps {
getPropertyDescriptor: Some(getPropertyDescriptor),
getOwnPropertyDescriptor: Some(getOwnPropertyDescriptor),
- defineProperty: Some(defineProperty_),
- getOwnPropertyNames: ptr::null(),
+ defineProperty: Some(%s),
+ getOwnPropertyNames: Some(getOwnPropertyNames_),
delete_: Some(delete_),
- enumerate: ptr::null(),
+ enumerate: Some(enumerate_),
has: None,
hasOwn: Some(hasOwn),
get: Some(get),
set: None,
- keys: ptr::null(),
+ keys: None,
iterate: None,
call: None,
@@ -2120,7 +2123,7 @@ let traps = ProxyTraps {
};
CreateProxyHandler(&traps, &Class as *const _ as *const _)
-""" % (FINALIZE_HOOK_NAME,
+""" % (customDefineProperty, FINALIZE_HOOK_NAME,
TRACE_HOOK_NAME)
return CGGeneric(body)
@@ -2276,8 +2279,15 @@ class CGPerSignatureCall(CGThing):
invalidEnumValueFatal=not setter) for
i in range(argConversionStartsAt, self.argCount)])
+ errorResult = None
+ if self.isFallible():
+ if nativeMethodName == "NamedSetter":
+ errorResult = " false"
+ else:
+ errorResult = " false as JSBool"
+
cgThings.append(CGCallGenerator(
- ' false as JSBool' if self.isFallible() else None,
+ errorResult,
self.getArguments(), self.argsPre, returnType,
self.extendedAttributes, descriptor, nativeMethodName,
static))
@@ -3836,14 +3846,14 @@ if expando.is_not_null() {
getIndexedOrExpando = getFromExpando + "\n"
namedGetter = self.descriptor.operations['NamedGetter']
- if namedGetter and False: #XXXjdm unfinished
- getNamed = ("if (JSID_IS_STRING(id)) {\n" +
+ if namedGetter:
+ getNamed = ("if (RUST_JSID_IS_STRING(id) != 0) {\n" +
" let name = jsid_to_str(cx, id);\n" +
" let this = UnwrapProxy(proxy);\n" +
" let this = JS::from_raw(this);\n" +
" let this = this.root();\n" +
CGIndenter(CGProxyNamedGetter(self.descriptor, templateValues)).define() +
- "}\n") % (self.descriptor.concreteType)
+ "}\n")
else:
getNamed = ""
@@ -4522,6 +4532,7 @@ class CGBindingRoot(CGThing):
'dom::bindings::proxyhandler::{_obj_toString, defineProperty_}',
'dom::bindings::proxyhandler::{FillPropertyDescriptor, GetExpandoObject}',
'dom::bindings::proxyhandler::{delete_, getPropertyDescriptor}',
+ 'dom::bindings::proxyhandler::{getOwnPropertyNames_, enumerate_}',
'dom::bindings::str::ByteString',
'page::JSPageInfo',
'libc',