1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
=== tests/cases/conformance/interfaces/declarationMerging/mergeTwoInterfaces.ts ===
// two 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
}
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
// basic generic case
interface B<T> {
>B : B<T>
>T : T
baz: string;
>baz : string
foo: T;
>foo : T
>T : T
}
interface B<T> {
>B : B<T>
>T : T
bar: T;
>bar : T
>T : T
}
var b: B<string>;
>b : B<string>
>B : B<T>
var r3 = b.foo
>r3 : string
>b.foo : string
>b : B<string>
>foo : string
var r4 = b.bar;
>r4 : string
>b.bar : string
>b : B<string>
>bar : 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
}
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
interface B<T> {
>B : B<T>
>T : T
foo: T;
>foo : T
>T : T
}
interface B<T> {
>B : B<T>
>T : T
bar: T;
>bar : T
>T : T
}
var b: B<string>;
>b : B<string>
>B : B<T>
var r3 = b.foo
>r3 : string
>b.foo : string
>b : B<string>
>foo : string
// BUG 856491
var r4 = b.bar; // any, should be string
>r4 : string
>b.bar : string
>b : B<string>
>bar : string
}
|