=== tests/cases/compiler/functionOverloads15.ts === function foo(foo:{a:string; b:number;}):string; >foo : { (foo: { a: string; b: number; }): string; (foo: { a: string; b: number; }): number; }, Symbol(foo, Decl(functionOverloads15.ts, 0, 0), Decl(functionOverloads15.ts, 0, 47), Decl(functionOverloads15.ts, 1, 47)) >foo : { a: string; b: number; }, Symbol(foo, Decl(functionOverloads15.ts, 0, 13)) >a : string, Symbol(a, Decl(functionOverloads15.ts, 0, 18)) >b : number, Symbol(b, Decl(functionOverloads15.ts, 0, 27)) function foo(foo:{a:string; b:number;}):number; >foo : { (foo: { a: string; b: number; }): string; (foo: { a: string; b: number; }): number; }, Symbol(foo, Decl(functionOverloads15.ts, 0, 0), Decl(functionOverloads15.ts, 0, 47), Decl(functionOverloads15.ts, 1, 47)) >foo : { a: string; b: number; }, Symbol(foo, Decl(functionOverloads15.ts, 1, 13)) >a : string, Symbol(a, Decl(functionOverloads15.ts, 1, 18)) >b : number, Symbol(b, Decl(functionOverloads15.ts, 1, 27)) function foo(foo:{a:string; b?:number;}):any { return "" } >foo : { (foo: { a: string; b: number; }): string; (foo: { a: string; b: number; }): number; }, Symbol(foo, Decl(functionOverloads15.ts, 0, 0), Decl(functionOverloads15.ts, 0, 47), Decl(functionOverloads15.ts, 1, 47)) >foo : { a: string; b?: number; }, Symbol(foo, Decl(functionOverloads15.ts, 2, 13)) >a : string, Symbol(a, Decl(functionOverloads15.ts, 2, 18)) >b : number, Symbol(b, Decl(functionOverloads15.ts, 2, 27)) >"" : string