haikuwebkit/JSTests/stress/spread-correct-global-objec...

46 lines
838 B
JavaScript

var globalObjectForObject = $vm.globalObjectForObject;
function assert(b) {
if (!b)
throw new Error("Bad assertion");
}
function spread(a) {
return [...a];
}
noInline(spread);
const objectText = `
let o = {
[Symbol.iterator]() {
return {
next() {
return {done: true};
}
};
}
};
o;
`;
let o = eval(objectText);
for (let i = 0; i < 1000; i++) {
if (i % 23 === 0)
o = eval(objectText);
spread(o);
}
let myGlobalObject = globalObjectForObject(new Object);
let secondGlobalObject = createGlobalObject();
let o2 = secondGlobalObject.Function("return {};")();
let error = null;
try {
spread(o2);
} catch(e) {
error = e;
}
assert(error);
assert(globalObjectForObject(error) === myGlobalObject);