|
1 | 1 | //! Completion for use trees
|
2 | 2 |
|
3 | 3 | use hir::ScopeDef;
|
4 |
| -use ide_db::FxHashSet; |
| 4 | +use ide_db::{FxHashSet, SymbolKind}; |
5 | 5 | use syntax::{ast, AstNode};
|
6 | 6 |
|
7 | 7 | use crate::{
|
8 | 8 | context::{CompletionContext, NameRefContext, PathCompletionCtx, PathKind, PathQualifierCtx},
|
9 | 9 | item::Builder,
|
10 |
| - CompletionRelevance, Completions, |
| 10 | + CompletionItem, CompletionItemKind, CompletionRelevance, Completions, |
11 | 11 | };
|
12 | 12 |
|
13 | 13 | pub(crate) fn complete_use_tree(acc: &mut Completions, ctx: &CompletionContext) {
|
@@ -105,20 +105,26 @@ pub(crate) fn complete_use_tree(acc: &mut Completions, ctx: &CompletionContext)
|
105 | 105 | None => {
|
106 | 106 | cov_mark::hit!(unqualified_path_selected_only);
|
107 | 107 | ctx.process_all_names(&mut |name, res| {
|
108 |
| - let should_add_resolution = match res { |
109 |
| - ScopeDef::ModuleDef(hir::ModuleDef::Module(_)) => true, |
110 |
| - ScopeDef::ModuleDef(hir::ModuleDef::Adt(hir::Adt::Enum(_))) => { |
111 |
| - match res.krate(ctx.db) { |
112 |
| - // exclude prelude enum |
113 |
| - Some(krate) => !krate.is_builtin(ctx.db), |
114 |
| - _ => true, |
| 108 | + match res { |
| 109 | + ScopeDef::ModuleDef(hir::ModuleDef::Module(_)) => { |
| 110 | + acc.add_resolution(ctx, name, res); |
| 111 | + } |
| 112 | + ScopeDef::ModuleDef(hir::ModuleDef::Adt(hir::Adt::Enum(e))) => { |
| 113 | + // exclude prelude enum |
| 114 | + let is_builtin = |
| 115 | + res.krate(ctx.db).map_or(false, |krate| krate.is_builtin(ctx.db)); |
| 116 | + |
| 117 | + if !is_builtin { |
| 118 | + let item = CompletionItem::new( |
| 119 | + CompletionItemKind::SymbolKind(SymbolKind::Enum), |
| 120 | + ctx.source_range(), |
| 121 | + format!("{}::", e.name(ctx.db)), |
| 122 | + ); |
| 123 | + acc.add(item.build()); |
115 | 124 | }
|
116 | 125 | }
|
117 |
| - _ => false, |
| 126 | + _ => {} |
118 | 127 | };
|
119 |
| - if should_add_resolution { |
120 |
| - acc.add_resolution(ctx, name, res); |
121 |
| - } |
122 | 128 | });
|
123 | 129 | acc.add_nameref_keywords_with_colon(ctx);
|
124 | 130 | }
|
|
0 commit comments