Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/context/analysis.rs')
| -rw-r--r-- | crates/ide-completion/src/context/analysis.rs | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/crates/ide-completion/src/context/analysis.rs b/crates/ide-completion/src/context/analysis.rs index c8068d6fc4..faeb97f93f 100644 --- a/crates/ide-completion/src/context/analysis.rs +++ b/crates/ide-completion/src/context/analysis.rs @@ -22,7 +22,7 @@ use syntax::{ }; use crate::{ - completions::postfix::is_in_condition, + completions::postfix::{is_in_condition, is_in_value}, context::{ AttrCtx, BreakableKind, COMPLETION_MARKER, CompletionAnalysis, DotAccess, DotAccessExprCtx, DotAccessKind, ItemListKind, LifetimeContext, LifetimeKind, NameContext, NameKind, @@ -1097,25 +1097,6 @@ fn classify_name_ref<'db>( .and_then(|next| next.first_token()) .is_some_and(|token| token.kind() == SyntaxKind::ELSE_KW) }; - let is_in_value = |it: &SyntaxNode| { - let Some(node) = it.parent() else { return false }; - let kind = node.kind(); - ast::LetStmt::can_cast(kind) - || ast::ArgList::can_cast(kind) - || ast::ArrayExpr::can_cast(kind) - || ast::ParenExpr::can_cast(kind) - || ast::BreakExpr::can_cast(kind) - || ast::ReturnExpr::can_cast(kind) - || ast::PrefixExpr::can_cast(kind) - || ast::FormatArgsArg::can_cast(kind) - || ast::RecordExprField::can_cast(kind) - || ast::BinExpr::cast(node.clone()) - .and_then(|expr| expr.rhs()) - .is_some_and(|expr| expr.syntax() == it) - || ast::IndexExpr::cast(node) - .and_then(|expr| expr.index()) - .is_some_and(|expr| expr.syntax() == it) - }; // We do not want to generate path completions when we are sandwiched between an item decl signature and its body. // ex. trait Foo $0 {} @@ -1429,7 +1410,7 @@ fn classify_name_ref<'db>( .find_map(ast::LetStmt::cast) .is_some_and(|it| it.semicolon_token().is_none()) || after_incomplete_let && incomplete_expr_stmt.unwrap_or(true) && !before_else_kw; - let in_value = is_in_value(it); + let in_value = is_in_value(&expr); let impl_ = fetch_immediate_impl_or_trait(sema, original_file, expr.syntax()) .and_then(Either::left); |