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:
bors-servo 2015-12-13 10:41:56 +05:30
commit 8bab1cd7a4
15 changed files with 8 additions and 62 deletions

View file

@ -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

View file

@ -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
View file

@ -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
View file

@ -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)",

View file

@ -24,9 +24,6 @@
[testConstructorDictionary5]
expected: FAIL
[testConstructor2undefined]
expected: FAIL
[testConstructorDictionary2irregular]
expected: FAIL

View file

@ -1,14 +0,0 @@
[DOMRect-001.htm]
type: testharness
[testConstructorUndefined1]
expected: FAIL
[testConstructorIllegal1]
expected: FAIL
[testConstructorIllegal2]
expected: FAIL
[testReadOnlyConstructorUndefined1]
expected: FAIL

View file

@ -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

View file

@ -3,9 +3,6 @@
[createHTMLDocument(): URL parsing]
expected: FAIL
[createHTMLDocument test 2: undefined,undefined,""]
expected: FAIL
[createHTMLDocument(): characterSet aliases]
expected: FAIL

View file

@ -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

View file

@ -1,5 +0,0 @@
[NodeIterator.html]
type: testharness
[createNodeIterator() with undefined as arguments]
expected: FAIL

View file

@ -1,5 +0,0 @@
[TreeWalker-basic.html]
type: testharness
[Construct a TreeWalker by document.createTreeWalker(root, undefined, undefined).]
expected: FAIL

View file

@ -1,8 +1,5 @@
[api-basics.html]
type: testharness
[Default inputs]
expected: FAIL
[Encode/decode round trip: utf-8]
expected: FAIL

View file

@ -1,5 +0,0 @@
[document.title-07.html]
type: testharness
[createHTMLDocument test 2: undefined,undefined,""]
expected: FAIL

View file

@ -1,5 +0,0 @@
[Close-undefined.htm]
type: testharness
[W3C WebSocket API - Close WebSocket - Code is undefined]
expected: FAIL

View file

@ -1,5 +0,0 @@
[Secure-Close-undefined.htm]
type: testharness
[W3C WebSocket API - Close Secure WebSocket - Code is undefined]
expected: FAIL