blob: 7c2fa85a1394b469c6f6b2a6748c116214fc33c3 [file] [log] [blame]
//@ runNoFTL
function assert(testedValue, msg) {
if (!testedValue)
throw Error(msg);
}
// RegExp.prototype with overridden exec.
(function () {
let accesses = [];
let origExec = RegExp.prototype.exec;
let obj = /rch/;
Object.defineProperty(RegExp.prototype, "exec", {
value: function(str) {
accesses.push("exec");
return origExec.call(this, str);
}
});
assert(accesses == "", "unexpected call to overridden props");
let result = RegExp.prototype.test.call(obj, "searchme");
assert(accesses == "exec", "Property accesses do not match expectation");
assert(result === true, "Unexpected result");
accesses = [];
obj = /not/;
assert(accesses == "", "unexpected call to overridden props");
result = RegExp.prototype.test.call(obj, "searchme");
assert(accesses == "exec", "Property accesses do not match expectation");
assert(result === false, "Unexpected result");
})();