blob: d55630d508312864185c7a4eb2704e193929a3f9 [file] [log] [blame]
// BaseProxyHandler::set correctly defines a property on receiver if the
// property being assigned doesn't exist anywhere on the proto chain.
var p = Proxy.create({
getOwnPropertyDescriptor() { return undefined; },
getPropertyDescriptor() { return undefined; },
defineProperty() { throw "FAIL"; }
});
var q = new Proxy(p, {
defineProperty(t, id, desc) {
assertEq(t, p);
assertEq(id, "x");
assertEq(desc.configurable, true);
assertEq(desc.enumerable, true);
assertEq(desc.writable, true);
assertEq(desc.value, 3);
hits++;
return true;
}
});
var hits = 0;
// This assignment eventually reaches ScriptedIndirectProxyHandler::set
// with arguments (proxy=p, receiver=q). Test that it finishes by defining
// a property on receiver, not on proxy.
q.x = 3;
assertEq(hits, 1);