diff options
| author | bors <bors@rust-lang.org> | 2022-06-04 23:02:50 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-06-04 23:02:50 +0000 |
| commit | 02c6c191528cfee434bda54e5d9ef57c9c3d3981 (patch) | |
| tree | 40f6cb2a13dbba2601ee919b2a124ce92edf969c | |
| parent | 044b6ddca93375320db7f33744bf14a061b016e6 (diff) | |
| parent | fbffe736121d1eba7eb3fc1bf4b115c3cca672cf (diff) | |
| download | rust-02c6c191528cfee434bda54e5d9ef57c9c3d3981.tar.gz rust-02c6c191528cfee434bda54e5d9ef57c9c3d3981.zip | |
Auto merge of #12467 - Veykril:assist-fix, r=Veykril
fix: Fix match to if let assist for wildcard pats
| -rw-r--r-- | crates/ide-assists/src/handlers/replace_if_let_with_match.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/crates/ide-assists/src/handlers/replace_if_let_with_match.rs b/crates/ide-assists/src/handlers/replace_if_let_with_match.rs index 1c403eafe30..2b68b2dc03a 100644 --- a/crates/ide-assists/src/handlers/replace_if_let_with_match.rs +++ b/crates/ide-assists/src/handlers/replace_if_let_with_match.rs @@ -256,6 +256,7 @@ fn pick_pattern_and_expr_order( ) -> Option<(ast::Pat, ast::Expr, ast::Expr)> { let res = match (pat, pat2) { (ast::Pat::WildcardPat(_), _) => return None, + (pat, ast::Pat::WildcardPat(_)) => (pat, expr, expr2), (pat, _) if is_empty_expr(&expr2) => (pat, expr, expr2), (_, pat) if is_empty_expr(&expr) => (pat, expr2, expr), (pat, pat2) => match (binds_name(sema, &pat), binds_name(sema, &pat2)) { @@ -971,4 +972,28 @@ impl VariantData { } "#, ) } + + #[test] + fn test_replace_match_with_if_let_forces_else() { + check_assist( + replace_match_with_if_let, + r#" +fn main() { + match$0 0 { + 0 => (), + _ => code(), + } +} +"#, + r#" +fn main() { + if let 0 = 0 { + () + } else { + code() + } +} +"#, + ) + } } |
