mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Auto merge of #8854 - KiChjang:undefined-as-missing, r=frewsxcv
Treat 'undefined' passed to optional JS arguments as missing @frewsxcv please don't hurt me for this. I've added an AND condition to check whether the value being passed is undefined while checking whether the argument exists at all. Essentially, this is now treating undefined arguments the same as missing arguments. Fixes #8813. Fixes #6558. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/8854) <!-- Reviewable:end -->
This commit is contained in:
commit
8bab1cd7a4
15 changed files with 8 additions and 62 deletions
|
@ -1142,7 +1142,6 @@ class CGArgumentConverter(CGThing):
|
|||
"argc": argc,
|
||||
"args": args
|
||||
}
|
||||
condition = string.Template("${index} < ${argc}").substitute(replacer)
|
||||
|
||||
replacementVariables = {
|
||||
"val": string.Template("${args}.get(${index})").substitute(replacer),
|
||||
|
@ -1164,17 +1163,18 @@ class CGArgumentConverter(CGThing):
|
|||
|
||||
if not argument.variadic:
|
||||
if argument.optional:
|
||||
condition = "{args}.get({index}).is_undefined()".format(**replacer)
|
||||
if argument.defaultValue:
|
||||
assert default
|
||||
template = CGIfElseWrapper(condition,
|
||||
CGGeneric(template),
|
||||
CGGeneric(default)).define()
|
||||
CGGeneric(default),
|
||||
CGGeneric(template)).define()
|
||||
else:
|
||||
assert not default
|
||||
declType = CGWrapper(declType, pre="Option<", post=">")
|
||||
template = CGIfElseWrapper(condition,
|
||||
CGGeneric("Some(%s)" % template),
|
||||
CGGeneric("None")).define()
|
||||
CGGeneric("None"),
|
||||
CGGeneric("Some(%s)" % template)).define()
|
||||
else:
|
||||
assert not default
|
||||
|
||||
|
|
2
components/servo/Cargo.lock
generated
2
components/servo/Cargo.lock
generated
|
@ -880,7 +880,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "js"
|
||||
version = "0.1.1"
|
||||
source = "git+https://github.com/servo/rust-mozjs#6bfe259e0adc51ceabeb95d3af87d9041d16a767"
|
||||
source = "git+https://github.com/servo/rust-mozjs#07523d8b3dd12276eb94a266e83c0b1d77aa4160"
|
||||
dependencies = [
|
||||
"heapsize 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
2
ports/cef/Cargo.lock
generated
2
ports/cef/Cargo.lock
generated
|
@ -840,7 +840,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "js"
|
||||
version = "0.1.1"
|
||||
source = "git+https://github.com/servo/rust-mozjs#6bfe259e0adc51ceabeb95d3af87d9041d16a767"
|
||||
source = "git+https://github.com/servo/rust-mozjs#07523d8b3dd12276eb94a266e83c0b1d77aa4160"
|
||||
dependencies = [
|
||||
"heapsize 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
2
ports/gonk/Cargo.lock
generated
2
ports/gonk/Cargo.lock
generated
|
@ -816,7 +816,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "js"
|
||||
version = "0.1.1"
|
||||
source = "git+https://github.com/servo/rust-mozjs#6bfe259e0adc51ceabeb95d3af87d9041d16a767"
|
||||
source = "git+https://github.com/servo/rust-mozjs#07523d8b3dd12276eb94a266e83c0b1d77aa4160"
|
||||
dependencies = [
|
||||
"heapsize 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"libc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
|
@ -24,9 +24,6 @@
|
|||
[testConstructorDictionary5]
|
||||
expected: FAIL
|
||||
|
||||
[testConstructor2undefined]
|
||||
expected: FAIL
|
||||
|
||||
[testConstructorDictionary2irregular]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
[DOMRect-001.htm]
|
||||
type: testharness
|
||||
[testConstructorUndefined1]
|
||||
expected: FAIL
|
||||
|
||||
[testConstructorIllegal1]
|
||||
expected: FAIL
|
||||
|
||||
[testConstructorIllegal2]
|
||||
expected: FAIL
|
||||
|
||||
[testReadOnlyConstructorUndefined1]
|
||||
expected: FAIL
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
[Comment-constructor.html]
|
||||
type: testharness
|
||||
[new Comment(): undefined]
|
||||
expected: FAIL
|
||||
|
||||
[new Comment() should get the correct ownerDocument across globals]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -3,9 +3,6 @@
|
|||
[createHTMLDocument(): URL parsing]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument test 2: undefined,undefined,""]
|
||||
expected: FAIL
|
||||
|
||||
[createHTMLDocument(): characterSet aliases]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,8 +1,5 @@
|
|||
[Text-constructor.html]
|
||||
type: testharness
|
||||
[new Text(): undefined]
|
||||
expected: FAIL
|
||||
|
||||
[new Text() should get the correct ownerDocument across globals]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[NodeIterator.html]
|
||||
type: testharness
|
||||
[createNodeIterator() with undefined as arguments]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[TreeWalker-basic.html]
|
||||
type: testharness
|
||||
[Construct a TreeWalker by document.createTreeWalker(root, undefined, undefined).]
|
||||
expected: FAIL
|
||||
|
|
@ -1,8 +1,5 @@
|
|||
[api-basics.html]
|
||||
type: testharness
|
||||
[Default inputs]
|
||||
expected: FAIL
|
||||
|
||||
[Encode/decode round trip: utf-8]
|
||||
expected: FAIL
|
||||
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
[document.title-07.html]
|
||||
type: testharness
|
||||
[createHTMLDocument test 2: undefined,undefined,""]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[Close-undefined.htm]
|
||||
type: testharness
|
||||
[W3C WebSocket API - Close WebSocket - Code is undefined]
|
||||
expected: FAIL
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
[Secure-Close-undefined.htm]
|
||||
type: testharness
|
||||
[W3C WebSocket API - Close Secure WebSocket - Code is undefined]
|
||||
expected: FAIL
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue