summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_6/Class/superPropStrictAssign.js
blob: 4b5444a3cfd82424dec289f7d862251ba8721086 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// While |super| is common in classes, it also works in object litterals,
// where there is no guarantee of strict mode. Check that we do not somehow
// get strict mode semantics when they were not called for

// |undefined|, writable: false
Object.defineProperty(Object.prototype, "prop", { writable: false });

class strictAssignmentTest {
    constructor() {
        // Strict mode. Throws.
        super.prop = 14;
    }
}

assertThrowsInstanceOf(()=>new strictAssignmentTest(), TypeError);

// Non-strict. Silent failure.
({ test() { super.prop = 14; } }).test();

assertEq(Object.prototype.prop, undefined);

if (typeof reportCompare === 'function')
    reportCompare(0,0,"OK");