@@ -129,3 +129,75 @@ class Foo2
129129 }
130130}
131131
132+ // Repro from #29513
133+
134+ class AInfo {
135+ >AInfo : Symbol(AInfo, Decl(narrowingOfDottedNames.ts, 56, 1))
136+
137+ a_count: number = 1;
138+ >a_count : Symbol(AInfo.a_count, Decl(narrowingOfDottedNames.ts, 60, 13))
139+ }
140+
141+ class BInfo {
142+ >BInfo : Symbol(BInfo, Decl(narrowingOfDottedNames.ts, 62, 1))
143+
144+ b_count: number = 1;
145+ >b_count : Symbol(BInfo.b_count, Decl(narrowingOfDottedNames.ts, 64, 13))
146+ }
147+
148+ class Base {
149+ >Base : Symbol(Base, Decl(narrowingOfDottedNames.ts, 66, 1))
150+
151+ id: number = 0;
152+ >id : Symbol(Base.id, Decl(narrowingOfDottedNames.ts, 68, 12))
153+ }
154+
155+ class A2 extends Base {
156+ >A2 : Symbol(A2, Decl(narrowingOfDottedNames.ts, 70, 1))
157+ >Base : Symbol(Base, Decl(narrowingOfDottedNames.ts, 66, 1))
158+
159+ info!: AInfo;
160+ >info : Symbol(A2.info, Decl(narrowingOfDottedNames.ts, 72, 23))
161+ >AInfo : Symbol(AInfo, Decl(narrowingOfDottedNames.ts, 56, 1))
162+ }
163+
164+ class B2 extends Base {
165+ >B2 : Symbol(B2, Decl(narrowingOfDottedNames.ts, 74, 1))
166+ >Base : Symbol(Base, Decl(narrowingOfDottedNames.ts, 66, 1))
167+
168+ info!: BInfo;
169+ >info : Symbol(B2.info, Decl(narrowingOfDottedNames.ts, 76, 23))
170+ >BInfo : Symbol(BInfo, Decl(narrowingOfDottedNames.ts, 62, 1))
171+ }
172+
173+ let target: Base = null as any;
174+ >target : Symbol(target, Decl(narrowingOfDottedNames.ts, 80, 3))
175+ >Base : Symbol(Base, Decl(narrowingOfDottedNames.ts, 66, 1))
176+
177+ while (target) {
178+ >target : Symbol(target, Decl(narrowingOfDottedNames.ts, 80, 3))
179+
180+ if (target instanceof A2) {
181+ >target : Symbol(target, Decl(narrowingOfDottedNames.ts, 80, 3))
182+ >A2 : Symbol(A2, Decl(narrowingOfDottedNames.ts, 70, 1))
183+
184+ target.info.a_count = 3;
185+ >target.info.a_count : Symbol(AInfo.a_count, Decl(narrowingOfDottedNames.ts, 60, 13))
186+ >target.info : Symbol(A2.info, Decl(narrowingOfDottedNames.ts, 72, 23))
187+ >target : Symbol(target, Decl(narrowingOfDottedNames.ts, 80, 3))
188+ >info : Symbol(A2.info, Decl(narrowingOfDottedNames.ts, 72, 23))
189+ >a_count : Symbol(AInfo.a_count, Decl(narrowingOfDottedNames.ts, 60, 13))
190+ }
191+ else if (target instanceof B2) {
192+ >target : Symbol(target, Decl(narrowingOfDottedNames.ts, 80, 3))
193+ >B2 : Symbol(B2, Decl(narrowingOfDottedNames.ts, 74, 1))
194+
195+ const j: BInfo = target.info;
196+ >j : Symbol(j, Decl(narrowingOfDottedNames.ts, 87, 13))
197+ >BInfo : Symbol(BInfo, Decl(narrowingOfDottedNames.ts, 62, 1))
198+ >target.info : Symbol(B2.info, Decl(narrowingOfDottedNames.ts, 76, 23))
199+ >target : Symbol(target, Decl(narrowingOfDottedNames.ts, 80, 3))
200+ >info : Symbol(B2.info, Decl(narrowingOfDottedNames.ts, 76, 23))
201+ }
202+ }
203+
0 commit comments