@@ -4,6 +4,7 @@ use std::fmt;
44
55use hir:: { Documentation , Mutability } ;
66use ide_db:: { imports:: import_assets:: LocatedImport , SnippetCap , SymbolKind } ;
7+ use itertools:: Itertools ;
78use smallvec:: SmallVec ;
89use stdx:: { impl_from, never} ;
910use syntax:: { SmolStr , TextRange , TextSize } ;
@@ -353,7 +354,7 @@ impl CompletionItem {
353354 relevance : CompletionRelevance :: default ( ) ,
354355 ref_match : None ,
355356 imports_to_add : Default :: default ( ) ,
356- doc_aliases : None ,
357+ doc_aliases : vec ! [ ] ,
357358 }
358359 }
359360
@@ -386,7 +387,7 @@ pub(crate) struct Builder {
386387 source_range : TextRange ,
387388 imports_to_add : SmallVec < [ LocatedImport ; 1 ] > ,
388389 trait_name : Option < SmolStr > ,
389- doc_aliases : Option < SmolStr > ,
390+ doc_aliases : Vec < SmolStr > ,
390391 label : SmolStr ,
391392 insert_text : Option < String > ,
392393 is_snippet : bool ,
@@ -418,7 +419,8 @@ impl Builder {
418419 let mut lookup = self . lookup . unwrap_or_else ( || label. clone ( ) ) ;
419420 let insert_text = self . insert_text . unwrap_or_else ( || label. to_string ( ) ) ;
420421
421- if let Some ( doc_aliases) = self . doc_aliases {
422+ if !self . doc_aliases . is_empty ( ) {
423+ let doc_aliases = self . doc_aliases . into_iter ( ) . join ( ", " ) ;
422424 label = SmolStr :: from ( format ! ( "{label} (alias {doc_aliases})" ) ) ;
423425 lookup = SmolStr :: from ( format ! ( "{lookup} {doc_aliases}" ) ) ;
424426 }
@@ -464,8 +466,8 @@ impl Builder {
464466 self . trait_name = Some ( trait_name) ;
465467 self
466468 }
467- pub ( crate ) fn doc_aliases ( & mut self , doc_aliases : SmolStr ) -> & mut Builder {
468- self . doc_aliases = Some ( doc_aliases) ;
469+ pub ( crate ) fn doc_aliases ( & mut self , doc_aliases : Vec < SmolStr > ) -> & mut Builder {
470+ self . doc_aliases = doc_aliases;
469471 self
470472 }
471473 pub ( crate ) fn insert_text ( & mut self , insert_text : impl Into < String > ) -> & mut Builder {
0 commit comments