113 lines
No EOL
1.5 KiB
TypeScript
113 lines
No EOL
1.5 KiB
TypeScript
//
|
|
// test codegen for instance properties
|
|
//
|
|
class A {
|
|
public p1 = 0;
|
|
private p2 = 0;
|
|
p3;
|
|
}
|
|
|
|
class B {
|
|
public p1 = 0;
|
|
private p2 = 0;
|
|
p3;
|
|
|
|
constructor() {}
|
|
}
|
|
|
|
class C {
|
|
constructor(public p1=0, private p2=0, p3=0) {}
|
|
}
|
|
|
|
//
|
|
// test requirements for super calls
|
|
//
|
|
class D { // NO ERROR
|
|
|
|
}
|
|
|
|
class E extends D { // NO ERROR
|
|
public p1 = 0;
|
|
}
|
|
|
|
class F extends E {
|
|
constructor() {} // ERROR - super call required
|
|
}
|
|
|
|
class G extends D {
|
|
public p1 = 0;
|
|
constructor() { super(); } // NO ERROR
|
|
}
|
|
|
|
class H {
|
|
constructor() { super(); } // ERROR - no super call allowed
|
|
}
|
|
|
|
class I extends Object {
|
|
constructor() { super(); } // ERROR - no super call allowed
|
|
}
|
|
|
|
class J extends G {
|
|
constructor(public p1:number) {
|
|
super(); // NO ERROR
|
|
}
|
|
}
|
|
|
|
class K extends G {
|
|
constructor(public p1:number) { // ERROR
|
|
var i = 0;
|
|
super();
|
|
}
|
|
}
|
|
|
|
class L extends G {
|
|
constructor(private p1:number) {
|
|
super(); // NO ERROR
|
|
}
|
|
}
|
|
|
|
class M extends G {
|
|
constructor(private p1:number) { // ERROR
|
|
var i = 0;
|
|
super();
|
|
}
|
|
}
|
|
|
|
//
|
|
// test this reference in field initializers
|
|
//
|
|
class N {
|
|
public p1 = 0;
|
|
public p2 = this.p1;
|
|
|
|
constructor() {
|
|
this.p2 = 0;
|
|
}
|
|
}
|
|
|
|
//
|
|
// test error on property declarations within class constructors
|
|
//
|
|
class O {
|
|
constructor() {
|
|
public p1 = 0; // ERROR
|
|
}
|
|
}
|
|
|
|
class P {
|
|
constructor() {
|
|
private p1 = 0; // ERROR
|
|
}
|
|
}
|
|
|
|
class Q {
|
|
constructor() {
|
|
public this.p1 = 0; // ERROR
|
|
}
|
|
}
|
|
|
|
class R {
|
|
constructor() {
|
|
private this.p1 = 0; // ERROR
|
|
}
|
|
} |