@@ -831,3 +831,45 @@ function md5(string:string): void {
831831export default md5;
832832>md5 : Symbol(md5, Decl(controlFlowSelfReferentialLoop.ts, 0, 0))
833833
834+ // Repro from #26655
835+
836+ interface DataShape {
837+ >DataShape : Symbol(DataShape, Decl(controlFlowSelfReferentialLoop.ts, 99, 19))
838+
839+ message: { id: string }
840+ >message : Symbol(DataShape.message, Decl(controlFlowSelfReferentialLoop.ts, 103, 21))
841+ >id : Symbol(id, Decl(controlFlowSelfReferentialLoop.ts, 104, 12))
842+ }
843+
844+ function getObject(id: string | number) {
845+ >getObject : Symbol(getObject, Decl(controlFlowSelfReferentialLoop.ts, 105, 1))
846+ >id : Symbol(id, Decl(controlFlowSelfReferentialLoop.ts, 107, 19))
847+
848+ return {} as any
849+ }
850+
851+ ;(() => {
852+ let id: string | number = 'a'
853+ >id : Symbol(id, Decl(controlFlowSelfReferentialLoop.ts, 112, 5))
854+
855+ while (1) {
856+ const data = getObject(id) as DataShape
857+ >data : Symbol(data, Decl(controlFlowSelfReferentialLoop.ts, 114, 9))
858+ >getObject : Symbol(getObject, Decl(controlFlowSelfReferentialLoop.ts, 105, 1))
859+ >id : Symbol(id, Decl(controlFlowSelfReferentialLoop.ts, 112, 5))
860+ >DataShape : Symbol(DataShape, Decl(controlFlowSelfReferentialLoop.ts, 99, 19))
861+
862+ const message = data.message
863+ >message : Symbol(message, Decl(controlFlowSelfReferentialLoop.ts, 115, 9))
864+ >data.message : Symbol(DataShape.message, Decl(controlFlowSelfReferentialLoop.ts, 103, 21))
865+ >data : Symbol(data, Decl(controlFlowSelfReferentialLoop.ts, 114, 9))
866+ >message : Symbol(DataShape.message, Decl(controlFlowSelfReferentialLoop.ts, 103, 21))
867+
868+ id = message.id
869+ >id : Symbol(id, Decl(controlFlowSelfReferentialLoop.ts, 112, 5))
870+ >message.id : Symbol(id, Decl(controlFlowSelfReferentialLoop.ts, 104, 12))
871+ >message : Symbol(message, Decl(controlFlowSelfReferentialLoop.ts, 115, 9))
872+ >id : Symbol(id, Decl(controlFlowSelfReferentialLoop.ts, 104, 12))
873+ }
874+ })()
875+
0 commit comments