Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/vis.rs')
| -rw-r--r-- | crates/ide-completion/src/completions/vis.rs | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/crates/ide-completion/src/completions/vis.rs b/crates/ide-completion/src/completions/vis.rs index 319976737e..18513039e6 100644 --- a/crates/ide-completion/src/completions/vis.rs +++ b/crates/ide-completion/src/completions/vis.rs @@ -7,29 +7,31 @@ use crate::{ Completions, }; -pub(crate) fn complete_vis_path(acc: &mut Completions, ctx: &CompletionContext) { - let (qualified, &has_in_token) = match ctx.path_context() { - Some(PathCompletionCtx { kind: PathKind::Vis { has_in_token }, qualified, .. }) => { +pub(crate) fn complete_vis_path( + acc: &mut Completions, + ctx: &CompletionContext, + path_ctx: &PathCompletionCtx, +) { + let (qualified, &has_in_token) = match path_ctx { + PathCompletionCtx { kind: PathKind::Vis { has_in_token }, qualified, .. } => { (qualified, has_in_token) } _ => return, }; match qualified { - Qualified::With { resolution, is_super_chain, .. } => { + Qualified::With { + resolution: Some(hir::PathResolution::Def(hir::ModuleDef::Module(module))), + is_super_chain, + .. + } => { // Try completing next child module of the path that is still a parent of the current module - if let Some(hir::PathResolution::Def(hir::ModuleDef::Module(module))) = resolution { - let next_towards_current = ctx - .module - .path_to_root(ctx.db) - .into_iter() - .take_while(|it| it != module) - .last(); - if let Some(next) = next_towards_current { - if let Some(name) = next.name(ctx.db) { - cov_mark::hit!(visibility_qualified); - acc.add_resolution(ctx, name, ScopeDef::ModuleDef(next.into())); - } + let next_towards_current = + ctx.module.path_to_root(ctx.db).into_iter().take_while(|it| it != module).last(); + if let Some(next) = next_towards_current { + if let Some(name) = next.name(ctx.db) { + cov_mark::hit!(visibility_qualified); + acc.add_resolution(ctx, name, ScopeDef::ModuleDef(next.into())); } } @@ -37,7 +39,7 @@ pub(crate) fn complete_vis_path(acc: &mut Completions, ctx: &CompletionContext) acc.add_keyword(ctx, "super::"); } } - Qualified::Absolute | Qualified::Infer => {} + Qualified::Absolute | Qualified::Infer | Qualified::With { .. } => {} Qualified::No => { if !has_in_token { cov_mark::hit!(kw_completion_in); |