==== tests/cases/conformance/interfaces/interfacesExtendingClasses/implementingAnInterfaceExtendingClassWithPrivates2.ts (15 errors) ==== class Foo { private x: string; } interface I extends Foo { y: number; } class Bar extends Foo implements I { // ok y: number; } class Bar2 extends Foo implements I { // error ~~~~ !!! Class 'Bar2' incorrectly extends base class 'Foo': !!! Private property 'x' cannot be reimplemented. ~~~~ !!! Class 'Bar2' incorrectly implements interface 'I': !!! Private property 'x' cannot be reimplemented. x: string; y: number; } class Bar3 extends Foo implements I { // error ~~~~ !!! Class 'Bar3' incorrectly extends base class 'Foo': !!! Private property 'x' cannot be reimplemented. ~~~~ !!! Class 'Bar3' incorrectly implements interface 'I': !!! Private property 'x' cannot be reimplemented. private x: string; y: number; } // another level of indirection module M { class Foo { private x: string; } class Baz extends Foo { z: number; } interface I extends Baz { y: number; } class Bar extends Foo implements I { // ok y: number; z: number; } class Bar2 extends Foo implements I { // error ~~~~ !!! Class 'Bar2' incorrectly extends base class 'Foo': !!! Private property 'x' cannot be reimplemented. ~~~~ !!! Class 'Bar2' incorrectly implements interface 'I': !!! Property 'z' is missing in type 'Bar2'. x: string; y: number; } class Bar3 extends Foo implements I { // error ~~~~ !!! Class 'Bar3' incorrectly extends base class 'Foo': !!! Private property 'x' cannot be reimplemented. ~~~~ !!! Class 'Bar3' incorrectly implements interface 'I': !!! Property 'z' is missing in type 'Bar3'. private x: string; y: number; } } // two levels of privates module M2 { class Foo { private x: string; } class Baz extends Foo { private y: number; } interface I extends Baz { z: number; } class Bar extends Foo implements I { // error ~~~ !!! Class 'Bar' incorrectly implements interface 'I': !!! Property 'y' is missing in type 'Bar'. z: number; } var b: Bar; var r1 = b.z; var r2 = b.x; // error ~~~ !!! Property 'Foo.x' is inaccessible. var r3 = b.y; // error ~ !!! Property 'y' does not exist on type 'Bar'. class Bar2 extends Foo implements I { // error ~~~~ !!! Class 'Bar2' incorrectly extends base class 'Foo': !!! Private property 'x' cannot be reimplemented. ~~~~ !!! Class 'Bar2' incorrectly implements interface 'I': !!! Property 'y' is missing in type 'Bar2'. x: string; z: number; } class Bar3 extends Foo implements I { // error ~~~~ !!! Class 'Bar3' incorrectly extends base class 'Foo': !!! Private property 'x' cannot be reimplemented. ~~~~ !!! Class 'Bar3' incorrectly implements interface 'I': !!! Property 'y' is missing in type 'Bar3'. private x: string; z: number; } }