test262/implementation-contributed/javascriptcore/stress/lexical-let-and-with-statement.js
test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -04:00

79 lines
1.6 KiB
JavaScript

function truth() {
return true;
}
noInline(truth);
function assert(cond) {
if (!cond)
throw new Error("broke assertion");
}
noInline(assert);
;(function() {
function foo() {
let x = 40;
with ({x : 100}) {
assert(x === 100);
}
with ({y : 100}) {
assert(x === 40);
}
}
noInline(foo);
function bar() {
let x = 40;
function capX() { return x; }
with ({x : 100}) {
if (truth()) {
let x = 50;
let capX = function() { return x; }
assert(x === 50);
assert(capX() === x);
}
assert(x === 100);
assert(capX() === 40);
}
with ({y : 100}) {
if (truth()) {
let x = 50;
let capX = function() { return x; }
assert(x === 50);
assert(capX() === x);
}
assert(x === 40);
assert(capX() === 40);
}
}
noInline(bar);
function baz() {
let x = 40;
function capX() { return x; }
with ({x : 100}) {
if (truth()) {
let x = 50;
assert(x === 50);
}
assert(x === 100);
assert(capX() === 40);
}
with ({y : 100}) {
if (truth()) {
let x = 50;
assert(x === 50);
}
assert(x === 40);
assert(capX() === 40);
}
}
noInline(baz);
for (let i = 0; i < 100; i++) {
foo();
bar();
baz();
}
})();