blob: f459311e558b36b566c49d28dd05c19180c05af1 (
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
29
30
31
32
33
34
35
36
37
38
|
// Classes are always strict mode. Check computed property names and heritage
// expressions as well.
class a { constructor() { Object.preventExtensions({}).prop = 0; } }
assertThrowsInstanceOf(() => new a(), TypeError);
var aExpr = class { constructor() { Object.preventExtensions().prop = 0; } };
assertThrowsInstanceOf(() => new aExpr(), TypeError);
function shouldThrowCPN() {
class b {
[Object.preventExtensions({}).prop = 4]() { }
constructor() { }
}
}
function shouldThrowCPNExpr() {
var b = class {
[Object.preventExtensions({}).prop = 4]() { }
constructor() { }
};
}
assertThrowsInstanceOf(shouldThrowCPN, TypeError);
assertThrowsInstanceOf(shouldThrowCPNExpr, TypeError);
function shouldThrowHeritage() {
class b extends (Object.preventExtensions({}).prop = 4) {
constructor() { }
}
}
function shouldThrowHeritageExpr() {
var b = class extends (Object.preventExtensions({}).prop = 4) {
constructor() { }
};
}
assertThrowsInstanceOf(shouldThrowHeritage, TypeError);
assertThrowsInstanceOf(shouldThrowHeritageExpr, TypeError);
if (typeof reportCompare === "function")
reportCompare(0, 0, "OK");
|