Fix else completion in let _ = if x {} $0

This commit is contained in:
A4-Tacks 2025-08-23 15:52:54 +08:00
parent e6cd085099
commit 3e48de3905
No known key found for this signature in database
GPG key ID: 86AC1F526BA06668
2 changed files with 355 additions and 3 deletions

View file

@ -943,9 +943,14 @@ fn classify_name_ref<'db>(
};
let prev_sibling = non_trivia_sibling(node.into(), Direction::Prev)?.into_node()?;
ast::ExprStmt::cast(prev_sibling.clone())
.and_then(|it| it.expr())
.or_else(|| ast::Expr::cast(prev_sibling))
match_ast! {
match prev_sibling {
ast::ExprStmt(stmt) => stmt.expr().filter(|_| stmt.semicolon_token().is_none()),
ast::LetStmt(stmt) => stmt.initializer().filter(|_| stmt.semicolon_token().is_none()),
ast::Expr(expr) => Some(expr),
_ => None,
}
}
})();
matches!(prev_expr, Some(ast::Expr::IfExpr(_)))
};