Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-completion/src/completions/use_.rs')
-rw-r--r--crates/ide-completion/src/completions/use_.rs17
1 files changed, 14 insertions, 3 deletions
diff --git a/crates/ide-completion/src/completions/use_.rs b/crates/ide-completion/src/completions/use_.rs
index f1beeb454c..2d86217077 100644
--- a/crates/ide-completion/src/completions/use_.rs
+++ b/crates/ide-completion/src/completions/use_.rs
@@ -101,11 +101,22 @@ pub(crate) fn complete_use_tree(acc: &mut Completions, ctx: &CompletionContext)
cov_mark::hit!(use_tree_crate_roots_only);
acc.add_crate_roots(ctx);
}
- // only show modules in a fresh UseTree
+ // only show modules and non-std enum in a fresh UseTree
None => {
- cov_mark::hit!(unqualified_path_only_modules_in_import);
+ cov_mark::hit!(unqualified_path_selected_only);
ctx.process_all_names(&mut |name, res| {
- if let ScopeDef::ModuleDef(hir::ModuleDef::Module(_)) = res {
+ let should_add_resolution = match res {
+ ScopeDef::ModuleDef(hir::ModuleDef::Module(_)) => true,
+ ScopeDef::ModuleDef(hir::ModuleDef::Adt(hir::Adt::Enum(_))) => {
+ match res.krate(ctx.db) {
+ // exclude prelude enum
+ Some(krate) => !krate.is_builtin(ctx.db),
+ _ => true,
+ }
+ }
+ _ => false,
+ };
+ if should_add_resolution {
acc.add_resolution(ctx, name, res);
}
});