@@ -69,3 +69,146 @@ function foo5(bar: "a" | "b"): number {
69
69
}
70
70
}
71
71
72
+ // Repro from #32905.
73
+
74
+ enum Foo {
75
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
76
+
77
+ One,
78
+ >One : Symbol(Foo.One, Decl(exhaustiveSwitchImplicitReturn.ts, 43, 10))
79
+
80
+ Two,
81
+ >Two : Symbol(Foo.Two, Decl(exhaustiveSwitchImplicitReturn.ts, 44, 8))
82
+
83
+ Three
84
+ >Three : Symbol(Foo.Three, Decl(exhaustiveSwitchImplicitReturn.ts, 45, 8))
85
+ }
86
+
87
+ function test2(type: Foo): number {
88
+ >test2 : Symbol(test2, Decl(exhaustiveSwitchImplicitReturn.ts, 47, 1))
89
+ >type : Symbol(type, Decl(exhaustiveSwitchImplicitReturn.ts, 49, 15))
90
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
91
+
92
+ try {
93
+ switch (type) {
94
+ >type : Symbol(type, Decl(exhaustiveSwitchImplicitReturn.ts, 49, 15))
95
+
96
+ case Foo.One:
97
+ >Foo.One : Symbol(Foo.One, Decl(exhaustiveSwitchImplicitReturn.ts, 43, 10))
98
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
99
+ >One : Symbol(Foo.One, Decl(exhaustiveSwitchImplicitReturn.ts, 43, 10))
100
+
101
+ return 0;
102
+ case Foo.Two:
103
+ >Foo.Two : Symbol(Foo.Two, Decl(exhaustiveSwitchImplicitReturn.ts, 44, 8))
104
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
105
+ >Two : Symbol(Foo.Two, Decl(exhaustiveSwitchImplicitReturn.ts, 44, 8))
106
+
107
+ return 0;
108
+ case Foo.Three:
109
+ >Foo.Three : Symbol(Foo.Three, Decl(exhaustiveSwitchImplicitReturn.ts, 45, 8))
110
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
111
+ >Three : Symbol(Foo.Three, Decl(exhaustiveSwitchImplicitReturn.ts, 45, 8))
112
+
113
+ return 0;
114
+ }
115
+ } catch (e) {
116
+ >e : Symbol(e, Decl(exhaustiveSwitchImplicitReturn.ts, 59, 13))
117
+
118
+ throw new Error('some error')
119
+ >Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
120
+ }
121
+ }
122
+
123
+ function test3(type: Foo): number {
124
+ >test3 : Symbol(test3, Decl(exhaustiveSwitchImplicitReturn.ts, 62, 1))
125
+ >type : Symbol(type, Decl(exhaustiveSwitchImplicitReturn.ts, 64, 15))
126
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
127
+
128
+ try {
129
+ console.log('some switch')
130
+ >console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
131
+ >console : Symbol(console, Decl(lib.dom.d.ts, --, --))
132
+ >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
133
+
134
+ switch (type) {
135
+ >type : Symbol(type, Decl(exhaustiveSwitchImplicitReturn.ts, 64, 15))
136
+
137
+ case Foo.One:
138
+ >Foo.One : Symbol(Foo.One, Decl(exhaustiveSwitchImplicitReturn.ts, 43, 10))
139
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
140
+ >One : Symbol(Foo.One, Decl(exhaustiveSwitchImplicitReturn.ts, 43, 10))
141
+
142
+ return 0;
143
+ case Foo.Two:
144
+ >Foo.Two : Symbol(Foo.Two, Decl(exhaustiveSwitchImplicitReturn.ts, 44, 8))
145
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
146
+ >Two : Symbol(Foo.Two, Decl(exhaustiveSwitchImplicitReturn.ts, 44, 8))
147
+
148
+ return 0;
149
+ case Foo.Three:
150
+ >Foo.Three : Symbol(Foo.Three, Decl(exhaustiveSwitchImplicitReturn.ts, 45, 8))
151
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
152
+ >Three : Symbol(Foo.Three, Decl(exhaustiveSwitchImplicitReturn.ts, 45, 8))
153
+
154
+ return 0;
155
+ }
156
+ } catch (e) {
157
+ >e : Symbol(e, Decl(exhaustiveSwitchImplicitReturn.ts, 75, 13))
158
+
159
+ console.log('some error')
160
+ >console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
161
+ >console : Symbol(console, Decl(lib.dom.d.ts, --, --))
162
+ >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
163
+
164
+ throw new Error('some error')
165
+ >Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
166
+ }
167
+ }
168
+
169
+ function test4(type: Foo): number {
170
+ >test4 : Symbol(test4, Decl(exhaustiveSwitchImplicitReturn.ts, 79, 1))
171
+ >type : Symbol(type, Decl(exhaustiveSwitchImplicitReturn.ts, 81, 15))
172
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
173
+
174
+ try {
175
+ console.log('some switch')
176
+ >console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
177
+ >console : Symbol(console, Decl(lib.dom.d.ts, --, --))
178
+ >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
179
+
180
+ switch (type) {
181
+ >type : Symbol(type, Decl(exhaustiveSwitchImplicitReturn.ts, 81, 15))
182
+
183
+ case Foo.One:
184
+ >Foo.One : Symbol(Foo.One, Decl(exhaustiveSwitchImplicitReturn.ts, 43, 10))
185
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
186
+ >One : Symbol(Foo.One, Decl(exhaustiveSwitchImplicitReturn.ts, 43, 10))
187
+
188
+ return 0;
189
+ case Foo.Two:
190
+ >Foo.Two : Symbol(Foo.Two, Decl(exhaustiveSwitchImplicitReturn.ts, 44, 8))
191
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
192
+ >Two : Symbol(Foo.Two, Decl(exhaustiveSwitchImplicitReturn.ts, 44, 8))
193
+
194
+ return 0;
195
+ case Foo.Three:
196
+ >Foo.Three : Symbol(Foo.Three, Decl(exhaustiveSwitchImplicitReturn.ts, 45, 8))
197
+ >Foo : Symbol(Foo, Decl(exhaustiveSwitchImplicitReturn.ts, 39, 1))
198
+ >Three : Symbol(Foo.Three, Decl(exhaustiveSwitchImplicitReturn.ts, 45, 8))
199
+
200
+ 0;
201
+ }
202
+ } catch (e) {
203
+ >e : Symbol(e, Decl(exhaustiveSwitchImplicitReturn.ts, 92, 13))
204
+
205
+ console.log('some error')
206
+ >console.log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
207
+ >console : Symbol(console, Decl(lib.dom.d.ts, --, --))
208
+ >log : Symbol(Console.log, Decl(lib.dom.d.ts, --, --))
209
+
210
+ throw new Error('some error')
211
+ >Error : Symbol(Error, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --))
212
+ }
213
+ }
214
+
0 commit comments