=== tests/cases/compiler/genericTypeWithCallableMembers2.ts === function foo1(f: T) { >foo1 : string>(f: T) => string, Symbol(foo1, Decl(genericTypeWithCallableMembers2.ts, 0, 0)) >T : T, Symbol(T, Decl(genericTypeWithCallableMembers2.ts, 0, 14)) >f : T, Symbol(f, Decl(genericTypeWithCallableMembers2.ts, 0, 41)) >T : T, Symbol(T, Decl(genericTypeWithCallableMembers2.ts, 0, 14)) return f(); // should return 'string', once returned 'any' >f() : string >f : T, Symbol(f, Decl(genericTypeWithCallableMembers2.ts, 0, 41)) } function foo2(f: T) { >foo2 : string>(f: T) => string, Symbol(foo2, Decl(genericTypeWithCallableMembers2.ts, 2, 1)) >T : T, Symbol(T, Decl(genericTypeWithCallableMembers2.ts, 4, 14)) >f : T, Symbol(f, Decl(genericTypeWithCallableMembers2.ts, 4, 45)) >T : T, Symbol(T, Decl(genericTypeWithCallableMembers2.ts, 4, 14)) return new f(); // should be legal, once was an error >new f() : string >f : T, Symbol(f, Decl(genericTypeWithCallableMembers2.ts, 4, 45)) }