34 lines
446 B
JavaScript
34 lines
446 B
JavaScript
//@ runNoLLInt
|
|
|
|
let counter = 0;
|
|
class A {
|
|
static set y(x) {
|
|
if (counter++ === 9) {
|
|
C.__proto__ = B2;
|
|
}
|
|
}
|
|
}
|
|
|
|
class B1 extends A {
|
|
}
|
|
|
|
let calledB2 = false;
|
|
class B2 extends A {
|
|
static set y(x) {
|
|
calledB2 = true;
|
|
}
|
|
}
|
|
|
|
class C extends B1 {
|
|
}
|
|
|
|
class D extends C {
|
|
}
|
|
|
|
for (let i = 0; i < 11; i++) {
|
|
D.y = 42;
|
|
}
|
|
|
|
if (!calledB2)
|
|
throw new Error('The setter for B2.y should have been called');
|