=== tests/cases/compiler/overloadOnGenericClassAndNonGenericClass.ts === class A { a; } >A : A >a : any class B { b; } >B : B >b : any class C { c; } >C : C >c : any class X { x: T; } >X : X >T : T >x : T >T : T class X1 { x: string; } >X1 : X1 >x : string class X2 { x: string; } >X2 : X2 >x : string function f(a: X1): A; >f : { (a: X1): A; (a: X): B; } >a : X1 >X1 : X1 >A : A function f(a: X): B; >f : { (a: X1): A; (a: X): B; } >T : T >a : X >X : X >T : T >B : B function f(a): any { >f : { (a: X1): A; (a: X): B; } >a : any } var xs: X; >xs : X >X : X var t3 = f(xs); >t3 : A >f(xs) : A >f : { (a: X1): A; (a: X): B; } >xs : X var t3: A; // should not error >t3 : A >A : A