summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/RegExp/prototype-different-global.js
blob: 34fc5ee8a1efdfe4b0fba55c03cd8dad7777d4b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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);