diff options
author | Linus Groh <mail@linusgroh.de> | 2020-04-28 23:58:23 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2020-04-29 01:30:59 +0200 |
commit | da0ab16f011bec0c4da862db80dc53c2122e04f2 (patch) | |
tree | ed378661f204e5246c1e91b8beb09c5f0e38d35a /Libraries/LibJS/Tests | |
parent | 6d6cd64689097260e376e5f7df0234dbcdb9fc0b (diff) | |
download | serenity-da0ab16f011bec0c4da862db80dc53c2122e04f2.zip |
LibJS: Don't handle arrays separately in Value::to_number()
Now that Array.prototype.join() is producing the correct results we
can remove the separate code path for arrays in Value::to_number()
and treat them like all other objects - using to_primitive() with
number as the preferred type and then calling to_number() on the
result.
This is how the spec descibes it.
This also means we don't crash anymore when trying to coerce
[<empty>] to a number - it now does the following:
[<empty>] - to string - "" - to number - 0
[<empty>, <empty>] - to string - "," - to number - NaN
Diffstat (limited to 'Libraries/LibJS/Tests')
-rw-r--r-- | Libraries/LibJS/Tests/to-number-basic.js | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/Libraries/LibJS/Tests/to-number-basic.js b/Libraries/LibJS/Tests/to-number-basic.js index e0d07a51fe..902ad293f2 100644 --- a/Libraries/LibJS/Tests/to-number-basic.js +++ b/Libraries/LibJS/Tests/to-number-basic.js @@ -9,6 +9,12 @@ try { assert(-null === 0); assert(+[] === 0); assert(-[] === 0); + assert(+[,] === 0); + assert(-[,] === 0); + assert(+[null] === 0); + assert(-[null] === 0); + assert(+[undefined] === 0); + assert(-[undefined] === 0); assert(+[[[[[]]]]] === 0); assert(-[[[[[]]]]] === 0); assert(+[[[[[42]]]]] === 42); @@ -35,8 +41,12 @@ try { assert(isNaN(-undefined)); assert(isNaN(+{})); assert(isNaN(-{})); - assert(isNaN(+{a: 1})); - assert(isNaN(-{a: 1})); + assert(isNaN(+{ a: 1 })); + assert(isNaN(-{ a: 1 })); + assert(isNaN(+[, , ,])); + assert(isNaN(-[, , ,])); + assert(isNaN(+[undefined, undefined])); + assert(isNaN(-[undefined, undefined])); assert(isNaN(+[1, 2, 3])); assert(isNaN(-[1, 2, 3])); assert(isNaN(+[[[["foo"]]]])); |