@@ -86,7 +86,7 @@ fn find_arms(
86
86
let mut extracting = None ;
87
87
let mut diverging = None ;
88
88
for arm in arms {
89
- if ctx. sema . is_diverging_match_arm ( & arm) ? {
89
+ if ctx. sema . type_of_expr ( & arm. expr ( ) . unwrap ( ) ) . unwrap ( ) . original ( ) . is_never ( ) {
90
90
diverging = Some ( arm) ;
91
91
} else {
92
92
extracting = Some ( arm) ;
@@ -159,6 +159,7 @@ mod tests {
159
159
check_assist_not_applicable (
160
160
convert_match_to_let_else,
161
161
r#"
162
+ //- minicore: option
162
163
fn foo(opt: Option<()>) {
163
164
let val = $0match opt {
164
165
Some(it) => it,
@@ -175,7 +176,8 @@ fn foo(opt: Option<()>) {
175
176
check_assist_not_applicable (
176
177
convert_match_to_let_else,
177
178
r#"
178
- fn foo(opt: Option<()>) {
179
+ //- minicore: option
180
+ fn foo(opt: Option<i32>) {
179
181
let val = $0match opt {
180
182
Some(it) => it + 1,
181
183
None => return,
@@ -187,6 +189,7 @@ fn foo(opt: Option<()>) {
187
189
check_assist_not_applicable (
188
190
convert_match_to_let_else,
189
191
r#"
192
+ //- minicore: option
190
193
fn foo(opt: Option<()>) {
191
194
let val = $0match opt {
192
195
Some(it) => {
@@ -206,6 +209,7 @@ fn foo(opt: Option<()>) {
206
209
check_assist_not_applicable (
207
210
convert_match_to_let_else,
208
211
r#"
212
+ //- minicore: option
209
213
fn foo(opt: Option<()>) {
210
214
let val = $0match opt {
211
215
Some(it) if 2 > 1 => it,
@@ -221,6 +225,7 @@ fn foo(opt: Option<()>) {
221
225
check_assist (
222
226
convert_match_to_let_else,
223
227
r#"
228
+ //- minicore: option
224
229
fn foo(opt: Option<()>) {
225
230
let val = $0match opt {
226
231
Some(it) => it,
@@ -241,6 +246,7 @@ fn foo(opt: Option<()>) {
241
246
check_assist (
242
247
convert_match_to_let_else,
243
248
r#"
249
+ //- minicore: option
244
250
fn foo(opt: Option<()>) {
245
251
let ref mut val = $0match opt {
246
252
Some(it) => it,
@@ -261,6 +267,7 @@ fn foo(opt: Option<()>) {
261
267
check_assist (
262
268
convert_match_to_let_else,
263
269
r#"
270
+ //- minicore: option, result
264
271
fn foo(opt: Option<Result<()>>) {
265
272
let val = $0match opt {
266
273
Some(Ok(it)) => it,
@@ -281,6 +288,7 @@ fn foo(opt: Option<Result<()>>) {
281
288
check_assist (
282
289
convert_match_to_let_else,
283
290
r#"
291
+ //- minicore: option
284
292
fn foo(opt: Option<()>) {
285
293
loop {
286
294
let val = $0match opt {
@@ -302,6 +310,7 @@ fn foo(opt: Option<()>) {
302
310
check_assist (
303
311
convert_match_to_let_else,
304
312
r#"
313
+ //- minicore: option
305
314
fn foo(opt: Option<()>) {
306
315
loop {
307
316
let val = $0match opt {
@@ -323,6 +332,7 @@ fn foo(opt: Option<()>) {
323
332
check_assist (
324
333
convert_match_to_let_else,
325
334
r#"
335
+ //- minicore: option
326
336
fn panic() -> ! {}
327
337
328
338
fn foo(opt: Option<()>) {
@@ -351,6 +361,7 @@ fn foo(opt: Option<()>) {
351
361
check_assist (
352
362
convert_match_to_let_else,
353
363
r#"
364
+ //- minicore: option
354
365
struct Point {
355
366
x: i32,
356
367
y: i32,
@@ -381,6 +392,7 @@ fn foo(opt: Option<Point>) {
381
392
check_assist (
382
393
convert_match_to_let_else,
383
394
r#"
395
+ //- minicore: option
384
396
fn foo(opt: Option<i32>) -> Option<i32> {
385
397
let val = $0match opt {
386
398
it @ Some(42) => it,
0 commit comments