Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/expr.rs')
-rw-r--r--crates/ide-completion/src/completions/expr.rs31
1 files changed, 18 insertions, 13 deletions
diff --git a/crates/ide-completion/src/completions/expr.rs b/crates/ide-completion/src/completions/expr.rs
index 7c3296a0b3..3d92a0ccef 100644
--- a/crates/ide-completion/src/completions/expr.rs
+++ b/crates/ide-completion/src/completions/expr.rs
@@ -5,7 +5,7 @@ use ide_db::FxHashSet;
use syntax::T;
use crate::{
- context::{NameRefContext, PathCompletionCtx, PathKind, PathQualifierCtx},
+ context::{NameRefContext, NameRefKind, PathCompletionCtx, PathKind, PathQualifierCtx},
CompletionContext, Completions,
};
@@ -21,24 +21,29 @@ pub(crate) fn complete_expr_path(acc: &mut Completions, ctx: &CompletionContext)
after_if_expr,
wants_mut_token,
) = match ctx.nameref_ctx() {
- Some(NameRefContext {
- path_ctx:
- Some(PathCompletionCtx {
+ Some(&NameRefContext {
+ kind:
+ Some(NameRefKind::Path(PathCompletionCtx {
kind:
- PathKind::Expr { in_block_expr, in_loop_body, after_if_expr, ref_expr_parent },
+ PathKind::Expr {
+ in_block_expr,
+ in_loop_body,
+ after_if_expr,
+ ref ref_expr_parent,
+ ref is_func_update,
+ },
is_absolute_path,
- qualifier,
+ ref qualifier,
..
- }),
- record_expr,
+ })),
..
}) if ctx.qualifier_ctx.none() => (
- *is_absolute_path,
+ is_absolute_path,
qualifier,
- *in_block_expr,
- *in_loop_body,
- record_expr.as_ref().map_or(false, |&(_, it)| it),
- *after_if_expr,
+ in_block_expr,
+ in_loop_body,
+ is_func_update.is_some(),
+ after_if_expr,
ref_expr_parent.as_ref().map(|it| it.mut_token().is_none()).unwrap_or(false),
),
_ => return,