=== tests/cases/conformance/interfaces/declarationMerging/twoMergedInterfacesWithDifferingOverloads.ts === // interfaces that merge must not have members that conflict interface A { >A : A, Symbol(A, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 0, 0), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 5, 1)) foo(x: number): number; >foo : { (x: number): number; (x: string): string; (x: Date): Date; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 2, 13), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 27), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 7, 13)) >x : number, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 8)) foo(x: string): string; >foo : { (x: number): number; (x: string): string; (x: Date): Date; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 2, 13), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 27), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 7, 13)) >x : string, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 4, 8)) } interface A { >A : A, Symbol(A, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 0, 0), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 5, 1)) foo(x: Date): Date; >foo : { (x: number): number; (x: string): string; (x: Date): Date; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 2, 13), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 3, 27), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 7, 13)) >x : Date, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 8, 8)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) } interface B { >B : B, Symbol(B, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 9, 1), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 14, 1)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 12)) foo(x: T): number; >foo : { (x: T): number; (x: string): string; (x: T): Date; (x: Date): string; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >x : T, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 8)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 12)) foo(x: string): string; >foo : { (x: T): number; (x: string): string; (x: T): Date; (x: Date): string; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >x : string, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 13, 8)) } interface B { >B : B, Symbol(B, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 9, 1), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 14, 1)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 12)) foo(x: T): Date; >foo : { (x: T): number; (x: string): string; (x: T): Date; (x: Date): string; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >x : T, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 8)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 12)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) foo(x: Date): string; >foo : { (x: T): number; (x: string): string; (x: T): Date; (x: Date): string; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >x : Date, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 18, 8)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) } var b: B; >b : B, Symbol(b, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 21, 3)) >B : B, Symbol(B, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 9, 1), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 14, 1)) var r = b.foo(true); // returns Date >r : Date, Symbol(r, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 22, 3)) >b.foo(true) : Date >b.foo : { (x: boolean): number; (x: string): string; (x: boolean): Date; (x: Date): string; }, Symbol(B.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >b : B, Symbol(b, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 21, 3)) >foo : { (x: boolean): number; (x: string): string; (x: boolean): Date; (x: Date): string; }, Symbol(B.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 11, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 12, 22), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 16, 16), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 17, 20)) >true : boolean // add generic overload interface C { >C : C, Symbol(C, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 22, 20), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 28, 1)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 12)) >U : U, Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 14)) foo(x: T, y: U): string; >foo : { (x: T, y: U): string; (x: string, y: string): number; (x: W, y: W): W; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) >x : T, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 8)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 12)) >y : U, Symbol(y, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 13)) >U : U, Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 14)) foo(x: string, y: string): number; >foo : { (x: T, y: U): string; (x: string, y: string): number; (x: W, y: W): W; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) >x : string, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 27, 8)) >y : string, Symbol(y, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 27, 18)) } interface C { >C : C, Symbol(C, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 22, 20), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 28, 1)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 12)) >U : U, Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 14)) foo(x: W, y: W): W; >foo : { (x: T, y: U): string; (x: string, y: string): number; (x: W, y: W): W; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) >W : W, Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 31, 8)) >x : W, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 31, 11)) >W : W, Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 31, 8)) >y : W, Symbol(y, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 31, 16)) >W : W, Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 31, 8)) >W : W, Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 31, 8)) } var c: C; >c : C, Symbol(c, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 34, 3)) >C : C, Symbol(C, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 22, 20), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 28, 1)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) var r2 = c.foo(1, 2); // number >r2 : number, Symbol(r2, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 35, 3)) >c.foo(1, 2) : number >c.foo : { (x: boolean, y: Date): string; (x: string, y: string): number; (x: W, y: W): W; }, Symbol(C.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) >c : C, Symbol(c, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 34, 3)) >foo : { (x: boolean, y: Date): string; (x: string, y: string): number; (x: W, y: W): W; }, Symbol(C.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 25, 19), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 26, 28), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 30, 19)) >1 : number >2 : number // add generic overload that would be ambiguous interface D { >D : D, Symbol(D, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 35, 21), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 42, 1)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 12)) >U : U, Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 14)) a: T; >a : T, Symbol(a, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 19)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 12)) b: U; >b : U, Symbol(b, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 39, 9)) >U : U, Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 14)) foo(x: A, y: A): U; >foo : { (x: A, y: A): U; (x: W, y: W): T; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 40, 9), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 19)) >A : A, Symbol(A, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 41, 8)) >x : A, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 41, 11)) >A : A, Symbol(A, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 41, 8)) >y : A, Symbol(y, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 41, 16)) >A : A, Symbol(A, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 41, 8)) >U : U, Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 14)) } interface D { >D : D, Symbol(D, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 35, 21), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 42, 1)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 12)) >U : U, Symbol(U, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 14), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 14)) foo(x: W, y: W): T; >foo : { (x: A, y: A): U; (x: W, y: W): T; }, Symbol(foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 40, 9), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 19)) >W : W, Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 45, 8)) >x : W, Symbol(x, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 45, 11)) >W : W, Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 45, 8)) >y : W, Symbol(y, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 45, 16)) >W : W, Symbol(W, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 45, 8)) >T : T, Symbol(T, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 38, 12), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 12)) } var d: D; >d : D, Symbol(d, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 48, 3)) >D : D, Symbol(D, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 35, 21), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 42, 1)) >Date : Date, Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) var r3 = d.foo(1, 1); // boolean, last definition wins >r3 : boolean, Symbol(r3, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 49, 3)) >d.foo(1, 1) : boolean >d.foo : { (x: A, y: A): Date; (x: W, y: W): boolean; }, Symbol(D.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 40, 9), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 19)) >d : D, Symbol(d, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 48, 3)) >foo : { (x: A, y: A): Date; (x: W, y: W): boolean; }, Symbol(D.foo, Decl(twoMergedInterfacesWithDifferingOverloads.ts, 40, 9), Decl(twoMergedInterfacesWithDifferingOverloads.ts, 44, 19)) >1 : number >1 : number