mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue