=== tests/cases/compiler/genericFunctionSpecializations1.ts === function foo3(test: string); // error >foo3 : (test: string) => any, Symbol(foo3, Decl(genericFunctionSpecializations1.ts, 0, 0), Decl(genericFunctionSpecializations1.ts, 0, 31)) >T : T, Symbol(T, Decl(genericFunctionSpecializations1.ts, 0, 14)) >test : string, Symbol(test, Decl(genericFunctionSpecializations1.ts, 0, 17)) function foo3(test: T) { } >foo3 : (test: string) => any, Symbol(foo3, Decl(genericFunctionSpecializations1.ts, 0, 0), Decl(genericFunctionSpecializations1.ts, 0, 31)) >T : T, Symbol(T, Decl(genericFunctionSpecializations1.ts, 1, 14)) >test : T, Symbol(test, Decl(genericFunctionSpecializations1.ts, 1, 17)) >T : T, Symbol(T, Decl(genericFunctionSpecializations1.ts, 1, 14)) function foo4(test: string); // valid >foo4 : (test: string) => any, Symbol(foo4, Decl(genericFunctionSpecializations1.ts, 1, 29), Decl(genericFunctionSpecializations1.ts, 3, 31)) >T : T, Symbol(T, Decl(genericFunctionSpecializations1.ts, 3, 14)) >test : string, Symbol(test, Decl(genericFunctionSpecializations1.ts, 3, 17)) function foo4(test: T) { } >foo4 : (test: string) => any, Symbol(foo4, Decl(genericFunctionSpecializations1.ts, 1, 29), Decl(genericFunctionSpecializations1.ts, 3, 31)) >T : T, Symbol(T, Decl(genericFunctionSpecializations1.ts, 4, 14)) >String : String, Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11)) >test : T, Symbol(test, Decl(genericFunctionSpecializations1.ts, 4, 32)) >T : T, Symbol(T, Decl(genericFunctionSpecializations1.ts, 4, 14))