* Fix class properties after nested class' bare super Fixes #7371. * Fix node 4 test * This damn node 4 test * All of the ClassBody, but not the methods or field inits * tmp * tmp * Use common class environment visitor * Tests * Use skipKey to avoid recursive traversal * Remove old state * Use jest expect
100 lines
1.3 KiB
JavaScript
100 lines
1.3 KiB
JavaScript
"use strict";
|
|
class C {
|
|
}
|
|
|
|
class A extends C {
|
|
field = 1;
|
|
|
|
constructor() {
|
|
super();
|
|
|
|
class B extends C {
|
|
constructor() {
|
|
super();
|
|
|
|
expect(this.field).toBeUndefined();
|
|
}
|
|
}
|
|
|
|
expect(this.field).toBe(1)
|
|
|
|
new B();
|
|
}
|
|
}
|
|
|
|
new A();
|
|
|
|
class Obj {
|
|
constructor() {
|
|
return {};
|
|
}
|
|
}
|
|
|
|
// ensure superClass is still transformed
|
|
class SuperClass extends Obj {
|
|
field = 1;
|
|
|
|
constructor() {
|
|
class B extends (super(), Obj) {
|
|
constructor() {
|
|
super();
|
|
|
|
expect(this.field).toBeUndefined()
|
|
}
|
|
}
|
|
|
|
expect(this.field).toBe(1)
|
|
|
|
new B();
|
|
}
|
|
}
|
|
|
|
new SuperClass();
|
|
|
|
// ensure ComputedKey Method is still transformed
|
|
class ComputedMethod extends Obj {
|
|
field = 1;
|
|
|
|
constructor() {
|
|
class B extends Obj {
|
|
constructor() {
|
|
super();
|
|
|
|
expect(this.field).toBeUndefined()
|
|
}
|
|
|
|
[super()]() { }
|
|
}
|
|
|
|
expect(this.field).toBe(1)
|
|
|
|
new B();
|
|
}
|
|
}
|
|
|
|
new ComputedMethod();
|
|
|
|
|
|
// ensure ComputedKey Field is still transformed
|
|
class ComputedField extends Obj {
|
|
field = 1;
|
|
|
|
constructor() {
|
|
class B extends Obj {
|
|
constructor() {
|
|
super();
|
|
|
|
expect(this.field).toBeUndefined()
|
|
}
|
|
|
|
[super()] = 1;
|
|
}
|
|
|
|
expect(this.field).toBe(1)
|
|
|
|
new B();
|
|
}
|
|
}
|
|
|
|
new ComputedField();
|