mirror of
https://github.com/tc39/test262.git
synced 2025-10-21 15:53:50 +02:00
* [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)
59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
JavaScript
function assert(b) {
|
|
if (!b)
|
|
throw new Error("Bad assertion!")
|
|
}
|
|
|
|
function obj() {
|
|
return {};
|
|
}
|
|
noInline(obj);
|
|
|
|
// This test makes sure that when wrapper() is called with the closure created in foo() as |this|
|
|
// that we to_this the |this| that is a closure before the arrow function captures its value.
|
|
// This crashes if there is a bug in debug builds.
|
|
|
|
const globalThis = this;
|
|
function foo() {
|
|
function capture() { return wrapper; }
|
|
function wrapper() {
|
|
let x = () => {
|
|
// This should not defineProperty on a JSLexicalEnvironment! That's a huge bug.
|
|
Object.defineProperty(this, "foo", {
|
|
get: function() { },
|
|
set: function() { }
|
|
});
|
|
assert(!("bar" in this));
|
|
assert(this === globalThis);
|
|
}
|
|
|
|
x();
|
|
}
|
|
wrapper();
|
|
}
|
|
foo();
|
|
|
|
|
|
function foo2() {
|
|
function capture() { return wrapper; }
|
|
function wrapper() {
|
|
let x = () => {
|
|
// This should not defineProperty on a JSLexicalEnvironment! That's a huge bug.
|
|
Object.defineProperty(this, "foo", {
|
|
get: function() { },
|
|
set: function() { }
|
|
});
|
|
}
|
|
|
|
x();
|
|
|
|
function bar() {
|
|
with (obj()) {
|
|
assert;
|
|
}
|
|
}
|
|
bar();
|
|
}
|
|
wrapper();
|
|
}
|
|
foo2();
|