Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

script: Fix integer-JSID handling in named getters. #18543

Merged
merged 3 commits into from Sep 18, 2017
Merged
Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Next

script: Fix integer-JSID handling in named getters.

Fixes #10686
  • Loading branch information
emilio committed Sep 18, 2017
commit f5d16fc069533b810a76a2fa611882e1b9c8743c
@@ -4750,7 +4750,7 @@ def __init__(self, descriptor, name):
def define(self):
# Our first argument is the id we're getting.
argName = self.arguments[0].identifier.name
return ("let %s = string_jsid_to_string(cx, id);\n"
return ("let %s = jsid_to_string(cx, id).expect(\"Not a string-convertible JSID?\");\n"
"let this = UnwrapProxy(proxy);\n"
"let this = &*this;\n" % argName +
CGProxySpecialOperation.define(self))
@@ -4868,7 +4868,7 @@ def getBody(self):
# ResolveOwnProperty or EnumerateOwnProperties filter out named
# properties that shadow prototype properties.
namedGet = """
if RUST_JSID_IS_STRING(id) {
if RUST_JSID_IS_STRING(id) || RUST_JSID_IS_INT(id) {
let mut has_on_proto = false;
if !has_property_on_prototype(cx, proxy, id, &mut has_on_proto) {
return false;
@@ -4935,12 +4935,12 @@ def getBody(self):
if self.descriptor.hasUnforgeableMembers:
raise TypeError("Can't handle a named setter on an interface that has "
"unforgeables. Figure out how that should work!")
set += ("if RUST_JSID_IS_STRING(id) {\n" +
set += ("if RUST_JSID_IS_STRING(id) || RUST_JSID_IS_INT(id) {\n" +
CGIndenter(CGProxyNamedSetter(self.descriptor)).define() +
" return (*opresult).succeed();\n" +
"}\n")
else:
set += ("if RUST_JSID_IS_STRING(id) {\n" +
set += ("if RUST_JSID_IS_STRING(id) || RUST_JSID_IS_INT(id) {\n" +
CGIndenter(CGProxyNamedGetter(self.descriptor)).define() +
" if result.is_some() {\n"
" return (*opresult).failNoNamedSetter();\n"
@@ -5095,7 +5095,7 @@ def getBody(self):
namedGetter = self.descriptor.operations['NamedGetter']
if namedGetter:
named = """\
if RUST_JSID_IS_STRING(id) {
if RUST_JSID_IS_STRING(id) || RUST_JSID_IS_INT(id) {
let mut has_on_proto = false;
if !has_property_on_prototype(cx, proxy, id, &mut has_on_proto) {
return false;
@@ -5175,7 +5175,7 @@ def getBody(self):

namedGetter = self.descriptor.operations['NamedGetter']
if namedGetter:
getNamed = ("if RUST_JSID_IS_STRING(id) {\n" +
getNamed = ("if RUST_JSID_IS_STRING(id) || RUST_JSID_IS_INT(id) {\n" +
CGIndenter(CGProxyNamedGetter(self.descriptor, templateValues)).define() +
"}\n")
else:
@@ -5633,6 +5633,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
'js::glue::GetProxyPrivate',
'js::glue::NewProxyObject',
'js::glue::ProxyTraps',
'js::glue::RUST_JSID_IS_INT',
'js::glue::RUST_JSID_IS_STRING',
'js::glue::RUST_SYMBOL_TO_JSID',
'js::glue::int_to_jsid',
@@ -5720,6 +5721,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
'dom::bindings::conversions::root_from_handlevalue',
'dom::bindings::conversions::root_from_object',
'dom::bindings::conversions::string_jsid_to_string',
'dom::bindings::conversions::jsid_to_string',
'dom::bindings::codegen::PrototypeList',
'dom::bindings::codegen::RegisterBindings',
'dom::bindings::codegen::UnionTypes',
@@ -12,73 +12,15 @@
expected: FAIL
bug: https://github.com/servo/servo/issues/6564

[localStorage["0"\]]
expected: FAIL
bug: https://github.com/servo/servo/issues/10686

[localStorage["1"\]]
expected: FAIL

[localStorage["2"\]]
expected: FAIL

[localStorage["3"\]]
expected: FAIL

[localStorage["4"\]]
expected: FAIL

[localStorage["5"\]]
expected: FAIL

[localStorage["6"\]]
expected: FAIL

[localStorage["7"\]]
expected: FAIL

[localStorage["8"\]]
expected: FAIL

[localStorage["9"\]]
expected: FAIL

[sessionStorage[\] = ""]
expected: FAIL
bug: https://github.com/servo/servo/issues/6564

[sessionStorage[\] = "�a"]
expected: FAIL
bug: https://github.com/servo/servo/issues/6564

[sessionStorage[\] = "a�"]
expected: FAIL

[sessionStorage["0"\]]
expected: FAIL

[sessionStorage["1"\]]
expected: FAIL

[sessionStorage["2"\]]
expected: FAIL

[sessionStorage["3"\]]
expected: FAIL

[sessionStorage["4"\]]
expected: FAIL

[sessionStorage["5"\]]
expected: FAIL

[sessionStorage["6"\]]
expected: FAIL

[sessionStorage["7"\]]
expected: FAIL

[sessionStorage["8"\]]
expected: FAIL

[sessionStorage["9"\]]
expected: FAIL
bug: https://github.com/servo/servo/issues/6564

ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.