Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/unqualify_method_call.rs')
| -rw-r--r-- | crates/ide-assists/src/handlers/unqualify_method_call.rs | 22 |
1 files changed, 2 insertions, 20 deletions
diff --git a/crates/ide-assists/src/handlers/unqualify_method_call.rs b/crates/ide-assists/src/handlers/unqualify_method_call.rs index 0876246e90..baf4ddae2f 100644 --- a/crates/ide-assists/src/handlers/unqualify_method_call.rs +++ b/crates/ide-assists/src/handlers/unqualify_method_call.rs @@ -1,6 +1,6 @@ use ide_db::imports::insert_use::ImportScope; use syntax::{ - ast::{self, make, AstNode, HasArgList}, + ast::{self, prec::ExprPrecedence, AstNode, HasArgList}, TextRange, }; @@ -55,7 +55,7 @@ pub(crate) fn unqualify_method_call(acc: &mut Assists, ctx: &AssistContext<'_>) TextRange::new(path.syntax().text_range().start(), l_paren.text_range().end()); // Parens around `expr` if needed - let parens = needs_parens_as_receiver(&first_arg).then(|| { + let parens = first_arg.precedence().needs_parentheses_in(ExprPrecedence::Postfix).then(|| { let range = first_arg.syntax().text_range(); (range.start(), range.end()) }); @@ -124,24 +124,6 @@ fn add_import( } } -fn needs_parens_as_receiver(expr: &ast::Expr) -> bool { - // Make `(expr).dummy()` - let dummy_call = make::expr_method_call( - make::expr_paren(expr.clone()), - make::name_ref("dummy"), - make::arg_list([]), - ); - - // Get the `expr` clone with the right parent back - // (unreachable!s are fine since we've just constructed the expression) - let ast::Expr::MethodCallExpr(call) = &dummy_call else { unreachable!() }; - let Some(receiver) = call.receiver() else { unreachable!() }; - let ast::Expr::ParenExpr(parens) = receiver else { unreachable!() }; - let Some(expr) = parens.expr() else { unreachable!() }; - - expr.needs_parens_in(dummy_call.syntax().clone()) -} - #[cfg(test)] mod tests { use crate::tests::{check_assist, check_assist_not_applicable}; |