blob: e77d00444ad58adfc640587c8da5f464f215a5b6 [file] [log] [blame] [edit]
function shouldThrow(fn, expectedError) {
let errorThrown = false;
try {
fn();
} catch (error) {
errorThrown = true;
if (error.toString() !== expectedError)
throw new Error(`Bad error: ${error}`);
}
if (!errorThrown)
throw new Error("Didn't throw!");
}
const callableGetTrapError = "TypeError: 'get' property of a Proxy's handler should be callable";
shouldThrow(() => {
var handler = {get: null};
var proxy = new Proxy({foo: 1}, handler);
for (var i = 0; i < 1e7; ++i) {
var foo = proxy.foo;
if (i === 1e7 / 2)
handler.get = 1;
}
}, callableGetTrapError);
shouldThrow(() => {
var handler = {get: undefined};
var proxy = new Proxy({foo: 1}, handler);
for (var i = 0; i < 1e7; ++i) {
var bar = proxy.bar;
if (i === 1e7 / 2)
handler.get = "foo";
}
}, callableGetTrapError);
shouldThrow(() => {
var handler = {get: null};
var proxy = new Proxy({foo: 1}, handler);
for (var i = 0; i < 1e7; ++i) {
var foo = proxy.foo;
if (i === 1e7 / 2)
handler.get = {};
}
}, callableGetTrapError);
shouldThrow(() => {
var handler = {get: undefined};
var proxy = new Proxy(() => {}, handler);
for (var i = 0; i < 1e7; ++i) {
var bar = proxy.bar;
if (i === 1e7 / 2)
handler.get = [];
}
}, callableGetTrapError);