==== tests/cases/compiler/genericTypeAssertions4.ts (5 errors) ==== class A { foo() { return ""; } } class B extends A { bar() { return 1; } } class C extends A { baz() { return 1; } } var a: A; var b: B; var c: C; function foo2(x: T) { var y = x; y = a; // error: cannot convert A to T ~ !!! Type 'A' is not assignable to type 'T'. y = b; // error: cannot convert B to T ~ !!! Type 'B' is not assignable to type 'T'. y = c; // error: cannot convert C to T ~ !!! Type 'C' is not assignable to type 'T'. y = a; y = b; // error: cannot convert B to T ~~~~ !!! Neither type 'T' nor type 'B' is assignable to the other. y = c; // error: cannot convert C to T ~~~~ !!! Neither type 'T' nor type 'C' is assignable to the other. }