mirror of
https://github.com/RGBCube/serenity
synced 2025-05-24 01:05:08 +00:00
LibJS: Allow function calls with missing arguments
We were interpreting "undefined" as a variable lookup failure in some cases and throwing a ReferenceError exception instead of treating it as the valid value "undefined". This patch wraps the result of variable lookup in Optional<>, which allows us to only throw ReferenceError when lookup actually fails.
This commit is contained in:
parent
04ced9e24a
commit
c60dc84a33
7 changed files with 45 additions and 10 deletions
19
Libraries/LibJS/Tests/variable-undefined.js
Normal file
19
Libraries/LibJS/Tests/variable-undefined.js
Normal file
|
@ -0,0 +1,19 @@
|
|||
function assert(x) { if (!x) throw 1; }
|
||||
|
||||
function foo(a) {
|
||||
return a;
|
||||
}
|
||||
|
||||
try {
|
||||
var x = undefined;
|
||||
assert(x === undefined);
|
||||
assert(foo(x) === undefined);
|
||||
|
||||
var o = {};
|
||||
o.x = x;
|
||||
assert(o.x === undefined);
|
||||
assert(o.x === x);
|
||||
console.log("PASS");
|
||||
} catch (e) {
|
||||
console.log("FAIL: " + e);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue