Unnamed repository; edit this file 'description' to name the repository.
fix: `make::expr_closure() -> ClosureExpr`
Signed-off-by: Prajwal S N <[email protected]>
Prajwal S N 2025-04-11
parent 92a7890 · commit 728d72f
-rw-r--r--crates/ide-assists/src/handlers/replace_method_eager_lazy.rs2
-rw-r--r--crates/syntax/src/ast/make.rs5
-rw-r--r--crates/syntax/src/ast/syntax_factory/constructors.rs6
3 files changed, 6 insertions, 7 deletions
diff --git a/crates/ide-assists/src/handlers/replace_method_eager_lazy.rs b/crates/ide-assists/src/handlers/replace_method_eager_lazy.rs
index afac6cd724..07dae634ad 100644
--- a/crates/ide-assists/src/handlers/replace_method_eager_lazy.rs
+++ b/crates/ide-assists/src/handlers/replace_method_eager_lazy.rs
@@ -79,7 +79,7 @@ fn into_closure(param: &Expr) -> Expr {
None
}
})()
- .unwrap_or_else(|| make::expr_closure(None, param.clone()))
+ .unwrap_or_else(|| make::expr_closure(None, param.clone()).into())
}
// Assist: replace_with_eager_method
diff --git a/crates/syntax/src/ast/make.rs b/crates/syntax/src/ast/make.rs
index 0cd503931b..8f37ebce6a 100644
--- a/crates/syntax/src/ast/make.rs
+++ b/crates/syntax/src/ast/make.rs
@@ -652,7 +652,10 @@ pub fn expr_ref(expr: ast::Expr, exclusive: bool) -> ast::Expr {
pub fn expr_reborrow(expr: ast::Expr) -> ast::Expr {
expr_from_text(&format!("&mut *{expr}"))
}
-pub fn expr_closure(pats: impl IntoIterator<Item = ast::Param>, expr: ast::Expr) -> ast::Expr {
+pub fn expr_closure(
+ pats: impl IntoIterator<Item = ast::Param>,
+ expr: ast::Expr,
+) -> ast::ClosureExpr {
let params = pats.into_iter().join(", ");
expr_from_text(&format!("|{params}| {expr}"))
}
diff --git a/crates/syntax/src/ast/syntax_factory/constructors.rs b/crates/syntax/src/ast/syntax_factory/constructors.rs
index 7d46a3598d..4c4c3f0d49 100644
--- a/crates/syntax/src/ast/syntax_factory/constructors.rs
+++ b/crates/syntax/src/ast/syntax_factory/constructors.rs
@@ -476,11 +476,7 @@ impl SyntaxFactory {
expr: ast::Expr,
) -> ast::ClosureExpr {
let (args, input) = iterator_input(pats);
- // FIXME: `make::expr_paren` should return a `ClosureExpr`, not just an `Expr`
- let ast::Expr::ClosureExpr(ast) = make::expr_closure(args, expr.clone()).clone_for_update()
- else {
- unreachable!()
- };
+ let ast = make::expr_closure(args, expr.clone()).clone_for_update();
if let Some(mut mapping) = self.mappings() {
let mut builder = SyntaxMappingBuilder::new(ast.syntax.clone());