Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-assists/src/handlers/inline_local_variable.rs')
-rw-r--r--crates/ide-assists/src/handlers/inline_local_variable.rs20
1 files changed, 3 insertions, 17 deletions
diff --git a/crates/ide-assists/src/handlers/inline_local_variable.rs b/crates/ide-assists/src/handlers/inline_local_variable.rs
index 5d4fbfc10a..cc7bea5152 100644
--- a/crates/ide-assists/src/handlers/inline_local_variable.rs
+++ b/crates/ide-assists/src/handlers/inline_local_variable.rs
@@ -5,11 +5,7 @@ use ide_db::{
EditionedFileId, RootDatabase,
};
use syntax::{
- ast::{
- self,
- prec::{precedence, ExprPrecedence},
- AstNode, AstToken, HasName,
- },
+ ast::{self, AstNode, AstToken, HasName},
SyntaxElement, TextRange,
};
@@ -77,22 +73,12 @@ pub(crate) fn inline_local_variable(acc: &mut Assists, ctx: &AssistContext<'_>)
}
let usage_node =
name_ref.syntax().ancestors().find(|it| ast::PathExpr::can_cast(it.kind()));
- let usage_parent_option =
- usage_node.and_then(|it| it.parent()).and_then(ast::Expr::cast);
+ let usage_parent_option = usage_node.and_then(|it| it.parent());
let usage_parent = match usage_parent_option {
Some(u) => u,
None => return Some((range, name_ref, false)),
};
- let initializer = precedence(&initializer_expr);
- let parent = precedence(&usage_parent);
- Some((
- range,
- name_ref,
- parent != ExprPrecedence::Unambiguous
- && initializer < parent
- // initializer == ExprPrecedence::Prefix -> parent != ExprPrecedence::Jump
- && (initializer != ExprPrecedence::Prefix || parent != ExprPrecedence::Jump),
- ))
+ Some((range, name_ref, initializer_expr.needs_parens_in(&usage_parent)))
})
.collect::<Option<Vec<_>>>()?;