@@ -29,91 +29,180 @@ class Derived2 implements Base {
2929>optional : Symbol(optional, Decl(instanceOfAssignability.ts, 11, 13))
3030}
3131
32+ class Animal {
33+ >Animal : Symbol(Animal, Decl(instanceOfAssignability.ts, 13, 1))
34+
35+ move;
36+ >move : Symbol(move, Decl(instanceOfAssignability.ts, 15, 14))
37+ }
38+ class Mammal extends Animal { milk; }
39+ >Mammal : Symbol(Mammal, Decl(instanceOfAssignability.ts, 17, 1))
40+ >Animal : Symbol(Animal, Decl(instanceOfAssignability.ts, 13, 1))
41+ >milk : Symbol(milk, Decl(instanceOfAssignability.ts, 18, 29))
42+
43+ class Giraffe extends Mammal { neck; }
44+ >Giraffe : Symbol(Giraffe, Decl(instanceOfAssignability.ts, 18, 37))
45+ >Mammal : Symbol(Mammal, Decl(instanceOfAssignability.ts, 17, 1))
46+ >neck : Symbol(neck, Decl(instanceOfAssignability.ts, 19, 30))
47+
3248function fn1(x: Array<number>|Array<string>|boolean) {
33- >fn1 : Symbol(fn1, Decl(instanceOfAssignability.ts, 13, 1 ))
34- >x : Symbol(x, Decl(instanceOfAssignability.ts, 15 , 13))
49+ >fn1 : Symbol(fn1, Decl(instanceOfAssignability.ts, 19, 38 ))
50+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 21 , 13))
3551>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
3652>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
3753
3854if(x instanceof Array) {
39- >x : Symbol(x, Decl(instanceOfAssignability.ts, 15 , 13))
55+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 21 , 13))
4056>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
4157
4258// 1.5: y: Array<number>|Array<string>
4359// Want: y: Array<number>|Array<string>
4460let y = x;
45- >y : Symbol(y, Decl(instanceOfAssignability.ts, 19 , 5))
46- >x : Symbol(x, Decl(instanceOfAssignability.ts, 15 , 13))
61+ >y : Symbol(y, Decl(instanceOfAssignability.ts, 25 , 5))
62+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 21 , 13))
4763}
4864}
4965
5066function fn2(x: Base) {
51- >fn2 : Symbol(fn2, Decl(instanceOfAssignability.ts, 21 , 1))
52- >x : Symbol(x, Decl(instanceOfAssignability.ts, 23 , 13))
67+ >fn2 : Symbol(fn2, Decl(instanceOfAssignability.ts, 27 , 1))
68+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 29 , 13))
5369>Base : Symbol(Base, Decl(instanceOfAssignability.ts, 0, 0))
5470
5571if(x instanceof Derived1) {
56- >x : Symbol(x, Decl(instanceOfAssignability.ts, 23 , 13))
72+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 29 , 13))
5773>Derived1 : Symbol(Derived1, Decl(instanceOfAssignability.ts, 3, 1))
5874
5975// 1.5: y: Base
6076// Want: y: Derived1
6177let y = x;
62- >y : Symbol(y, Decl(instanceOfAssignability.ts, 27 , 5))
63- >x : Symbol(x, Decl(instanceOfAssignability.ts, 23 , 13))
78+ >y : Symbol(y, Decl(instanceOfAssignability.ts, 33 , 5))
79+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 29 , 13))
6480}
6581}
6682
6783function fn3(x: Base|Derived1) {
68- >fn3 : Symbol(fn3, Decl(instanceOfAssignability.ts, 29 , 1))
69- >x : Symbol(x, Decl(instanceOfAssignability.ts, 31 , 13))
84+ >fn3 : Symbol(fn3, Decl(instanceOfAssignability.ts, 35 , 1))
85+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 37 , 13))
7086>Base : Symbol(Base, Decl(instanceOfAssignability.ts, 0, 0))
7187>Derived1 : Symbol(Derived1, Decl(instanceOfAssignability.ts, 3, 1))
7288
7389if(x instanceof Derived2) {
74- >x : Symbol(x, Decl(instanceOfAssignability.ts, 31 , 13))
90+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 37 , 13))
7591>Derived2 : Symbol(Derived2, Decl(instanceOfAssignability.ts, 8, 1))
7692
7793// 1.5: y: Derived2
7894// Want: Derived2
7995let y = x;
80- >y : Symbol(y, Decl(instanceOfAssignability.ts, 35 , 5))
81- >x : Symbol(x, Decl(instanceOfAssignability.ts, 31 , 13))
96+ >y : Symbol(y, Decl(instanceOfAssignability.ts, 41 , 5))
97+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 37 , 13))
8298}
8399}
84100
85101function fn4(x: Base|Derived2) {
86- >fn4 : Symbol(fn4, Decl(instanceOfAssignability.ts, 37 , 1))
87- >x : Symbol(x, Decl(instanceOfAssignability.ts, 39 , 13))
102+ >fn4 : Symbol(fn4, Decl(instanceOfAssignability.ts, 43 , 1))
103+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 45 , 13))
88104>Base : Symbol(Base, Decl(instanceOfAssignability.ts, 0, 0))
89105>Derived2 : Symbol(Derived2, Decl(instanceOfAssignability.ts, 8, 1))
90106
91107if(x instanceof Derived1) {
92- >x : Symbol(x, Decl(instanceOfAssignability.ts, 39 , 13))
108+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 45 , 13))
93109>Derived1 : Symbol(Derived1, Decl(instanceOfAssignability.ts, 3, 1))
94110
95111// 1.5: y: {}
96112// Want: Derived1
97113let y = x;
98- >y : Symbol(y, Decl(instanceOfAssignability.ts, 43 , 5))
99- >x : Symbol(x, Decl(instanceOfAssignability.ts, 39 , 13))
114+ >y : Symbol(y, Decl(instanceOfAssignability.ts, 49 , 5))
115+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 45 , 13))
100116}
101117}
102118
103119function fn5(x: Derived1) {
104- >fn5 : Symbol(fn5, Decl(instanceOfAssignability.ts, 45 , 1))
105- >x : Symbol(x, Decl(instanceOfAssignability.ts, 47 , 13))
120+ >fn5 : Symbol(fn5, Decl(instanceOfAssignability.ts, 51 , 1))
121+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 53 , 13))
106122>Derived1 : Symbol(Derived1, Decl(instanceOfAssignability.ts, 3, 1))
107123
108124if(x instanceof Derived2) {
109- >x : Symbol(x, Decl(instanceOfAssignability.ts, 47 , 13))
125+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 53 , 13))
110126>Derived2 : Symbol(Derived2, Decl(instanceOfAssignability.ts, 8, 1))
111127
112128// 1.5: y: Derived1
113129// Want: ???
114130let y = x;
115- >y : Symbol(y, Decl(instanceOfAssignability.ts, 51, 5))
116- >x : Symbol(x, Decl(instanceOfAssignability.ts, 47, 13))
131+ >y : Symbol(y, Decl(instanceOfAssignability.ts, 57, 5))
132+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 53, 13))
133+ }
134+ }
135+
136+ function fn6(x: Animal|Mammal) {
137+ >fn6 : Symbol(fn6, Decl(instanceOfAssignability.ts, 59, 1))
138+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 61, 13))
139+ >Animal : Symbol(Animal, Decl(instanceOfAssignability.ts, 13, 1))
140+ >Mammal : Symbol(Mammal, Decl(instanceOfAssignability.ts, 17, 1))
141+
142+ if(x instanceof Giraffe) {
143+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 61, 13))
144+ >Giraffe : Symbol(Giraffe, Decl(instanceOfAssignability.ts, 18, 37))
145+
146+ // 1.5: y: Derived1
147+ // Want: ???
148+ let y = x;
149+ >y : Symbol(y, Decl(instanceOfAssignability.ts, 65, 5))
150+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 61, 13))
151+ }
152+ }
153+
154+ function fn7(x: Array<number>|Array<string>) {
155+ >fn7 : Symbol(fn7, Decl(instanceOfAssignability.ts, 67, 1))
156+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 69, 13))
157+ >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
158+ >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
159+
160+ if(x instanceof Array) {
161+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 69, 13))
162+ >Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11))
163+
164+ // 1.5: y: Array<number>|Array<string>
165+ // Want: y: Array<number>|Array<string>
166+ let y = x;
167+ >y : Symbol(y, Decl(instanceOfAssignability.ts, 73, 5))
168+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 69, 13))
169+ }
170+ }
171+
172+ interface Alpha { a }
173+ >Alpha : Symbol(Alpha, Decl(instanceOfAssignability.ts, 75, 1))
174+ >a : Symbol(a, Decl(instanceOfAssignability.ts, 77, 17))
175+
176+ interface Beta { b }
177+ >Beta : Symbol(Beta, Decl(instanceOfAssignability.ts, 77, 21))
178+ >b : Symbol(b, Decl(instanceOfAssignability.ts, 78, 16))
179+
180+ interface Gamma { c }
181+ >Gamma : Symbol(Gamma, Decl(instanceOfAssignability.ts, 78, 20))
182+ >c : Symbol(c, Decl(instanceOfAssignability.ts, 79, 17))
183+
184+ class ABC { a; b; c; }
185+ >ABC : Symbol(ABC, Decl(instanceOfAssignability.ts, 79, 21))
186+ >a : Symbol(a, Decl(instanceOfAssignability.ts, 80, 11))
187+ >b : Symbol(b, Decl(instanceOfAssignability.ts, 80, 14))
188+ >c : Symbol(c, Decl(instanceOfAssignability.ts, 80, 17))
189+
190+ function fn8(x: Alpha|Beta|Gamma) {
191+ >fn8 : Symbol(fn8, Decl(instanceOfAssignability.ts, 80, 22))
192+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 81, 13))
193+ >Alpha : Symbol(Alpha, Decl(instanceOfAssignability.ts, 75, 1))
194+ >Beta : Symbol(Beta, Decl(instanceOfAssignability.ts, 77, 21))
195+ >Gamma : Symbol(Gamma, Decl(instanceOfAssignability.ts, 78, 20))
196+
197+ if(x instanceof ABC) {
198+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 81, 13))
199+ >ABC : Symbol(ABC, Decl(instanceOfAssignability.ts, 79, 21))
200+
201+ let y = x;
202+ >y : Symbol(y, Decl(instanceOfAssignability.ts, 83, 5))
203+ >x : Symbol(x, Decl(instanceOfAssignability.ts, 81, 13))
117204}
118205}
119206
207+
208+
0 commit comments