Unnamed repository; edit this file 'description' to name the repository.
update wrap_expr in utils ref_field_expr and update corresponding handler
bit-aloo 2 months ago
parent 90c8906 · commit f89562f
-rw-r--r--crates/ide-assists/src/handlers/destructure_struct_binding.rs11
-rw-r--r--crates/ide-assists/src/utils/ref_field_expr.rs8
2 files changed, 8 insertions, 11 deletions
diff --git a/crates/ide-assists/src/handlers/destructure_struct_binding.rs b/crates/ide-assists/src/handlers/destructure_struct_binding.rs
index 4c4cee1d78..0f5ef0548c 100644
--- a/crates/ide-assists/src/handlers/destructure_struct_binding.rs
+++ b/crates/ide-assists/src/handlers/destructure_struct_binding.rs
@@ -381,23 +381,20 @@ fn build_usage_edit(
Some(field_expr) => Some({
let field_name: SmolStr = field_expr.name_ref()?.to_string().into();
let new_field_name = field_names.get(&field_name)?;
- let new_expr = ast::make::expr_path(ast::make::ext::ident_path(new_field_name));
+ let new_expr = make.expr_path(make.ident_path(new_field_name));
// If struct binding is a reference, we might need to deref field usages
if data.is_ref {
let (replace_expr, ref_data) = determine_ref_and_parens(ctx, &field_expr);
- (
- replace_expr.syntax().clone_for_update(),
- ref_data.wrap_expr(new_expr).syntax().clone_for_update(),
- )
+ (replace_expr.syntax().clone(), ref_data.wrap_expr(new_expr, make).syntax().clone())
} else {
- (field_expr.syntax().clone(), new_expr.syntax().clone_for_update())
+ (field_expr.syntax().clone(), new_expr.syntax().clone())
}
}),
None => Some((
usage.name.syntax().as_node().unwrap().clone(),
make.expr_macro(
- ast::make::ext::ident_path("todo"),
+ make.ident_path("todo"),
make.token_tree(syntax::SyntaxKind::L_PAREN, []),
)
.syntax()
diff --git a/crates/ide-assists/src/utils/ref_field_expr.rs b/crates/ide-assists/src/utils/ref_field_expr.rs
index df8ad41112..fc9bf210e4 100644
--- a/crates/ide-assists/src/utils/ref_field_expr.rs
+++ b/crates/ide-assists/src/utils/ref_field_expr.rs
@@ -5,7 +5,7 @@
//! based on the parent of the existing expression.
use syntax::{
AstNode, T,
- ast::{self, FieldExpr, MethodCallExpr, make, syntax_factory::SyntaxFactory},
+ ast::{self, FieldExpr, MethodCallExpr, syntax_factory::SyntaxFactory},
};
use crate::AssistContext;
@@ -119,13 +119,13 @@ pub(crate) struct RefData {
impl RefData {
/// Derefs `expr` and wraps it in parens if necessary
- pub(crate) fn wrap_expr(&self, mut expr: ast::Expr) -> ast::Expr {
+ pub(crate) fn wrap_expr(&self, mut expr: ast::Expr, make: &SyntaxFactory) -> ast::Expr {
if self.needs_deref {
- expr = make::expr_prefix(T![*], expr).into();
+ expr = make.expr_prefix(T![*], expr).into();
}
if self.needs_parentheses {
- expr = make::expr_paren(expr).into();
+ expr = make.expr_paren(expr).into();
}
expr