tests/cases/compiler/collisionSuperAndParameter.ts(12,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/collisionSuperAndParameter.ts(17,22): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. tests/cases/compiler/collisionSuperAndParameter.ts(21,7): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. tests/cases/compiler/collisionSuperAndParameter.ts(26,9): error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. tests/cases/compiler/collisionSuperAndParameter.ts(26,11): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. tests/cases/compiler/collisionSuperAndParameter.ts(32,19): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. tests/cases/compiler/collisionSuperAndParameter.ts(35,17): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. tests/cases/compiler/collisionSuperAndParameter.ts(52,17): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. tests/cases/compiler/collisionSuperAndParameter.ts(57,7): error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. ==== tests/cases/compiler/collisionSuperAndParameter.ts (9 errors) ==== class Foo { a() { var lamda = (_super: number) => { // No Error return x => this; // New scope. So should inject new _this capture } } b(_super: number) { // No Error var lambda = () => { return x => this; // New scope. So should inject new _this capture } } set c(_super: number) { // No error ~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. } } class Foo2 extends Foo { x() { var lamda = (_super: number) => { // Error ~~~~~~~~~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. return x => this; // New scope. So should inject new _this capture } } y(_super: number) { // Error ~~~~~~~~~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. var lambda = () => { return x => this; // New scope. So should inject new _this capture } } set z(_super: number) { // Error ~ !!! error TS1056: Accessors are only available when targeting ECMAScript 5 and higher. ~~~~~~~~~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. } public prop3: { doStuff: (_super: number) => void; // no error - no code gen } public prop4 = { doStuff: (_super: number) => { // should be error ~~~~~~~~~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. } } constructor(_super: number) { // should be error ~~~~~~~~~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. super(); } } declare class Foo3 extends Foo { x(); y(_super: number); // No error - no code gen constructor(_super: number); // No error - no code gen public prop2: { doStuff: (_super: number) => void; // no error - no code gen }; public _super: number; // No error } class Foo4 extends Foo { constructor(_super: number); // no code gen - no error constructor(_super: string);// no code gen - no error constructor(_super: any) { // should be error ~~~~~~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. super(); } y(_super: number); // no code gen - no error y(_super: string); // no code gen - no error y(_super: any) { // Error ~~~~~~~~~~~ !!! error TS2401: Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference. var lambda = () => { return x => this; // New scope. So should inject new _this capture } } }