mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-29 10:58:02 +00:00
Fix else completion before else keyword
Example
---
```rust
fn foo() {
let x = if true {
1
} el$0 else {
2
};
}
```
**Before this PR**:
```text
else~ k [LS]
else if~ k [LS]
```
**After this PR**:
```text
else if~ k [LS]
```
This commit is contained in:
parent
2268a56350
commit
c976f9900d
4 changed files with 133 additions and 3 deletions
|
|
@ -1282,11 +1282,12 @@ fn classify_name_ref<'db>(
|
|||
let after_incomplete_let = after_incomplete_let(it.clone()).is_some();
|
||||
let incomplete_expr_stmt =
|
||||
it.parent().and_then(ast::ExprStmt::cast).map(|it| it.semicolon_token().is_none());
|
||||
let before_else_kw = before_else_kw(it);
|
||||
let incomplete_let = it
|
||||
.parent()
|
||||
.and_then(ast::LetStmt::cast)
|
||||
.is_some_and(|it| it.semicolon_token().is_none())
|
||||
|| after_incomplete_let && incomplete_expr_stmt.unwrap_or(true) && !before_else_kw(it);
|
||||
|| after_incomplete_let && incomplete_expr_stmt.unwrap_or(true) && !before_else_kw;
|
||||
let in_value = it.parent().and_then(Either::<ast::LetStmt, ast::ArgList>::cast).is_some();
|
||||
let impl_ = fetch_immediate_impl(sema, original_file, expr.syntax());
|
||||
|
||||
|
|
@ -1302,6 +1303,7 @@ fn classify_name_ref<'db>(
|
|||
in_block_expr,
|
||||
in_breakable: in_loop_body,
|
||||
after_if_expr,
|
||||
before_else_kw,
|
||||
in_condition,
|
||||
ref_expr_parent,
|
||||
after_amp,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue