Source code

Revision control

Copy as Markdown

Other Tools

function test(otherGlobal) {
var otherRegExp = otherGlobal.RegExp;
for (let name of ["global", "ignoreCase", "multiline", "sticky", "unicode", "source"]) {
let getter = Object.getOwnPropertyDescriptor(RegExp.prototype, name).get;
assertEq(typeof getter, "function");
// Note: TypeError gets reported from wrong global if cross-compartment,
// so we test both cases.
let ex;
try {
getter.call(otherRegExp.prototype);
} catch (e) {
ex = e;
}
assertEq(ex instanceof TypeError || ex instanceof otherGlobal.TypeError, true);
}
let flagsGetter = Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get;
assertEq(flagsGetter.call(otherRegExp.prototype), "");
assertEq(RegExp.prototype.toString.call(otherRegExp.prototype), "/(?:)/");
}
test(newGlobal());
test(newGlobal({newCompartment: true}));
if (typeof reportCompare === "function")
reportCompare(0, 0);