=== tests/cases/conformance/interfaces/declarationMerging/mergeThreeInterfaces.ts === // interfaces with the same root module should merge // basic case interface A { >A : A foo: string; >foo : string } interface A { >A : A bar: number; >bar : number } interface A { >A : A baz: boolean; >baz : boolean } var a: A; >a : A >A : A var r1 = a.foo >r1 : string >a.foo : string >a : A >foo : string var r2 = a.bar; >r2 : number >a.bar : number >a : A >bar : number var r3 = a.baz; >r3 : boolean >a.baz : boolean >a : A >baz : boolean // basic generic case interface B { >B : B >T : T foo: T; >foo : T >T : T } interface B { >B : B >T : T bar: T; >bar : T >T : T } interface B { >B : B >T : T baz: T; >baz : T >T : T } var b: B; >b : B >B : B var r4 = b.foo >r4 : string >b.foo : string >b : B >foo : string var r5 = b.bar; >r5 : string >b.bar : string >b : B >bar : string var r6 = b.baz; >r6 : string >b.baz : string >b : B >baz : string // basic non-generic and generic case inside a module module M { >M : typeof M interface A { >A : A foo: string; >foo : string } interface A { >A : A bar: number; >bar : number } interface A { >A : A baz: boolean; >baz : boolean } var a: A; >a : A >A : A var r1 = a.foo; >r1 : string >a.foo : string >a : A >foo : string // BUG 856491 var r2 = a.bar; // any, should be number >r2 : number >a.bar : number >a : A >bar : number // BUG 856491 var r3 = a.baz; // any, should be boolean >r3 : boolean >a.baz : boolean >a : A >baz : boolean interface B { >B : B >T : T foo: T; >foo : T >T : T } interface B { >B : B >T : T bar: T; >bar : T >T : T } interface B { >B : B >T : T baz: T; >baz : T >T : T } var b: B; >b : B >B : B var r4 = b.foo >r4 : string >b.foo : string >b : B >foo : string // BUG 856491 var r5 = b.bar; // any, should be number >r5 : string >b.bar : string >b : B >bar : string // BUG 856491 var r6 = b.baz; // any, should be boolean >r6 : string >b.baz : string >b : B >baz : string }