=== tests/cases/compiler/innerOverloads.ts === function outer() { >outer : Symbol(outer, Decl(innerOverloads.ts, 0, 0)) function inner(x:number); // should work >inner : Symbol(inner, Decl(innerOverloads.ts, 1, 18), Decl(innerOverloads.ts, 2, 29), Decl(innerOverloads.ts, 3, 29)) >x : Symbol(x, Decl(innerOverloads.ts, 2, 19)) function inner(x:string); >inner : Symbol(inner, Decl(innerOverloads.ts, 1, 18), Decl(innerOverloads.ts, 2, 29), Decl(innerOverloads.ts, 3, 29)) >x : Symbol(x, Decl(innerOverloads.ts, 3, 19)) function inner(a:any) { return a; } >inner : Symbol(inner, Decl(innerOverloads.ts, 1, 18), Decl(innerOverloads.ts, 2, 29), Decl(innerOverloads.ts, 3, 29)) >a : Symbol(a, Decl(innerOverloads.ts, 4, 19)) >a : Symbol(a, Decl(innerOverloads.ts, 4, 19)) return inner(0); >inner : Symbol(inner, Decl(innerOverloads.ts, 1, 18), Decl(innerOverloads.ts, 2, 29), Decl(innerOverloads.ts, 3, 29)) } var x = outer(); // should work >x : Symbol(x, Decl(innerOverloads.ts, 9, 3)) >outer : Symbol(outer, Decl(innerOverloads.ts, 0, 0))