Skip to content

Commit

Permalink
Auto merge of rust-lang#12309 - Veykril:completion, r=Veykril
Browse files Browse the repository at this point in the history
fix: Fix incorrect expected type in completions for trailing match arms

Fixes rust-lang/rust-analyzer#12264
  • Loading branch information
bors committed May 19, 2022
2 parents d5ab27a + 018975b commit 4f7d1a9
Showing 1 changed file with 42 additions and 2 deletions.
44 changes: 42 additions & 2 deletions crates/ide-completion/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -802,9 +802,19 @@ impl<'a> CompletionContext<'a> {
)
}
},
// match foo { $0 }
// match foo { ..., pat => $0 }
ast::MatchExpr(it) => {
cov_mark::hit!(expected_type_match_arm_without_leading_char);
let ty = it.expr().and_then(|e| self.sema.type_of_expr(&e)).map(TypeInfo::original);
let ty = if self.previous_token_is(T![=>]) {
// match foo { ..., pat => $0 }
cov_mark::hit!(expected_type_match_arm_body_without_leading_char);
cov_mark::hit!(expected_type_match_arm_body_with_leading_char);
self.sema.type_of_expr(&it.into())
} else {
// match foo { $0 }
cov_mark::hit!(expected_type_match_arm_without_leading_char);
it.expr().and_then(|e| self.sema.type_of_expr(&e))
}.map(TypeInfo::original);
(ty, None)
},
ast::IfExpr(it) => {
Expand Down Expand Up @@ -1589,6 +1599,36 @@ fn foo() {
);
}

#[test]
fn expected_type_match_arm_body_without_leading_char() {
cov_mark::check!(expected_type_match_arm_body_without_leading_char);
check_expected_type_and_name(
r#"
struct Foo;
enum E { X }
fn foo() -> Foo {
match E::X { E::X => $0 }
}
"#,
expect![[r#"ty: Foo, name: ?"#]],
);
}

#[test]
fn expected_type_match_body_arm_with_leading_char() {
cov_mark::check!(expected_type_match_arm_body_with_leading_char);
check_expected_type_and_name(
r#"
struct Foo;
enum E { X }
fn foo() -> Foo {
match E::X { E::X => c$0 }
}
"#,
expect![[r#"ty: Foo, name: ?"#]],
);
}

#[test]
fn expected_type_if_let_without_leading_char() {
cov_mark::check!(expected_type_if_let_without_leading_char);
Expand Down

0 comments on commit 4f7d1a9

Please sign in to comment.