aboutsummaryrefslogtreecommitdiff
path: root/crates/ide_completion/src/completions/qualified_path.rs
diff options
context:
space:
mode:
authorLukas Wirth <[email protected]>2021-05-27 03:34:21 +0100
committerLukas Wirth <[email protected]>2021-05-27 11:23:36 +0100
commitf41c98342476087d0a4387e7d337ce2d897e0346 (patch)
tree1c9b8e9f5a3d26d921337f6f20501b38de6fcb94 /crates/ide_completion/src/completions/qualified_path.rs
parent30948e1ecb2fb4fe35bf9c5c1e49464d4ea1d064 (diff)
Don't complete non-macro item paths in impls and modules
Diffstat (limited to 'crates/ide_completion/src/completions/qualified_path.rs')
-rw-r--r--crates/ide_completion/src/completions/qualified_path.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/ide_completion/src/completions/qualified_path.rs b/crates/ide_completion/src/completions/qualified_path.rs
index ed48f61af..a90325e06 100644
--- a/crates/ide_completion/src/completions/qualified_path.rs
+++ b/crates/ide_completion/src/completions/qualified_path.rs
@@ -21,6 +21,18 @@ pub(crate) fn complete_qualified_path(acc: &mut Completions, ctx: &CompletionCon
21 }; 21 };
22 let context_module = ctx.scope.module(); 22 let context_module = ctx.scope.module();
23 23
24 if ctx.expects_item() || ctx.expects_assoc_item() {
25 if let PathResolution::Def(hir::ModuleDef::Module(module)) = resolution {
26 let module_scope = module.scope(ctx.db, context_module);
27 for (name, def) in module_scope {
28 if let ScopeDef::MacroDef(macro_def) = def {
29 acc.add_macro(ctx, Some(name.to_string()), macro_def);
30 }
31 }
32 }
33 return;
34 }
35
24 // Add associated types on type parameters and `Self`. 36 // Add associated types on type parameters and `Self`.
25 resolution.assoc_type_shorthand_candidates(ctx.db, |_, alias| { 37 resolution.assoc_type_shorthand_candidates(ctx.db, |_, alias| {
26 acc.add_type_alias(ctx, alias); 38 acc.add_type_alias(ctx, alias);