|
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