@@ -86,7 +86,7 @@ fn find_arms(
8686 let mut extracting = None ;
8787 let mut diverging = None ;
8888 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 ( ) {
9090 diverging = Some ( arm) ;
9191 } else {
9292 extracting = Some ( arm) ;
@@ -159,6 +159,7 @@ mod tests {
159159 check_assist_not_applicable (
160160 convert_match_to_let_else,
161161 r#"
162+ //- minicore: option
162163fn foo(opt: Option<()>) {
163164 let val = $0match opt {
164165 Some(it) => it,
@@ -175,7 +176,8 @@ fn foo(opt: Option<()>) {
175176 check_assist_not_applicable (
176177 convert_match_to_let_else,
177178 r#"
178- fn foo(opt: Option<()>) {
179+ //- minicore: option
180+ fn foo(opt: Option<i32>) {
179181 let val = $0match opt {
180182 Some(it) => it + 1,
181183 None => return,
@@ -187,6 +189,7 @@ fn foo(opt: Option<()>) {
187189 check_assist_not_applicable (
188190 convert_match_to_let_else,
189191 r#"
192+ //- minicore: option
190193fn foo(opt: Option<()>) {
191194 let val = $0match opt {
192195 Some(it) => {
@@ -206,6 +209,7 @@ fn foo(opt: Option<()>) {
206209 check_assist_not_applicable (
207210 convert_match_to_let_else,
208211 r#"
212+ //- minicore: option
209213fn foo(opt: Option<()>) {
210214 let val = $0match opt {
211215 Some(it) if 2 > 1 => it,
@@ -221,6 +225,7 @@ fn foo(opt: Option<()>) {
221225 check_assist (
222226 convert_match_to_let_else,
223227 r#"
228+ //- minicore: option
224229fn foo(opt: Option<()>) {
225230 let val = $0match opt {
226231 Some(it) => it,
@@ -241,6 +246,7 @@ fn foo(opt: Option<()>) {
241246 check_assist (
242247 convert_match_to_let_else,
243248 r#"
249+ //- minicore: option
244250fn foo(opt: Option<()>) {
245251 let ref mut val = $0match opt {
246252 Some(it) => it,
@@ -261,6 +267,7 @@ fn foo(opt: Option<()>) {
261267 check_assist (
262268 convert_match_to_let_else,
263269 r#"
270+ //- minicore: option, result
264271fn foo(opt: Option<Result<()>>) {
265272 let val = $0match opt {
266273 Some(Ok(it)) => it,
@@ -281,6 +288,7 @@ fn foo(opt: Option<Result<()>>) {
281288 check_assist (
282289 convert_match_to_let_else,
283290 r#"
291+ //- minicore: option
284292fn foo(opt: Option<()>) {
285293 loop {
286294 let val = $0match opt {
@@ -302,6 +310,7 @@ fn foo(opt: Option<()>) {
302310 check_assist (
303311 convert_match_to_let_else,
304312 r#"
313+ //- minicore: option
305314fn foo(opt: Option<()>) {
306315 loop {
307316 let val = $0match opt {
@@ -323,6 +332,7 @@ fn foo(opt: Option<()>) {
323332 check_assist (
324333 convert_match_to_let_else,
325334 r#"
335+ //- minicore: option
326336fn panic() -> ! {}
327337
328338fn foo(opt: Option<()>) {
@@ -351,6 +361,7 @@ fn foo(opt: Option<()>) {
351361 check_assist (
352362 convert_match_to_let_else,
353363 r#"
364+ //- minicore: option
354365struct Point {
355366 x: i32,
356367 y: i32,
@@ -381,6 +392,7 @@ fn foo(opt: Option<Point>) {
381392 check_assist (
382393 convert_match_to_let_else,
383394 r#"
395+ //- minicore: option
384396fn foo(opt: Option<i32>) -> Option<i32> {
385397 let val = $0match opt {
386398 it @ Some(42) => it,
0 commit comments