@@ -6,7 +6,7 @@ use arrayvec::ArrayVec;
66use either:: Either ;
77use hir:: {
88 AssocItem , Crate , FieldSource , HasContainer , HasCrate , HasSource , HirDisplay , HirFileId ,
9- InFile , LocalSource , ModuleSource , Semantics , db:: ExpandDatabase , symbols:: FileSymbol ,
9+ InFile , LocalSource , ModuleSource , Semantics , Symbol , db:: ExpandDatabase , symbols:: FileSymbol ,
1010} ;
1111use ide_db:: {
1212 FileId , FileRange , RootDatabase , SymbolKind ,
@@ -51,8 +51,7 @@ pub struct NavigationTarget {
5151 // FIXME: Symbol
5252 pub name : SmolStr ,
5353 pub kind : Option < SymbolKind > ,
54- // FIXME: Symbol
55- pub container_name : Option < SmolStr > ,
54+ pub container_name : Option < Symbol > ,
5655 pub description : Option < String > ,
5756 pub docs : Option < Documentation > ,
5857 /// In addition to a `name` field, a `NavigationTarget` may also be aliased
@@ -349,13 +348,13 @@ impl TryToNav for hir::ModuleDef {
349348
350349pub ( crate ) trait ToNavFromAst : Sized {
351350 const KIND : SymbolKind ;
352- fn container_name ( self , db : & RootDatabase ) -> Option < SmolStr > {
351+ fn container_name ( self , db : & RootDatabase ) -> Option < Symbol > {
353352 _ = db;
354353 None
355354 }
356355}
357356
358- fn container_name ( db : & RootDatabase , t : impl HasContainer , edition : Edition ) -> Option < SmolStr > {
357+ fn container_name ( db : & RootDatabase , t : impl HasContainer , edition : Edition ) -> Option < Symbol > {
359358 match t. container ( db) {
360359 hir:: ItemContainer :: Trait ( it) => Some ( it. name ( db) . display_no_db ( edition) . to_smolstr ( ) ) ,
361360 // FIXME: Handle owners of blocks correctly here
@@ -364,36 +363,38 @@ fn container_name(db: &RootDatabase, t: impl HasContainer, edition: Edition) ->
364363 }
365364 _ => None ,
366365 }
366+ . as_deref ( )
367+ . map ( Symbol :: intern)
367368}
368369
369370impl ToNavFromAst for hir:: Function {
370371 const KIND : SymbolKind = SymbolKind :: Function ;
371- fn container_name ( self , db : & RootDatabase ) -> Option < SmolStr > {
372+ fn container_name ( self , db : & RootDatabase ) -> Option < Symbol > {
372373 container_name ( db, self , self . krate ( db) . edition ( db) )
373374 }
374375}
375376
376377impl ToNavFromAst for hir:: Const {
377378 const KIND : SymbolKind = SymbolKind :: Const ;
378- fn container_name ( self , db : & RootDatabase ) -> Option < SmolStr > {
379+ fn container_name ( self , db : & RootDatabase ) -> Option < Symbol > {
379380 container_name ( db, self , self . krate ( db) . edition ( db) )
380381 }
381382}
382383impl ToNavFromAst for hir:: Static {
383384 const KIND : SymbolKind = SymbolKind :: Static ;
384- fn container_name ( self , db : & RootDatabase ) -> Option < SmolStr > {
385+ fn container_name ( self , db : & RootDatabase ) -> Option < Symbol > {
385386 container_name ( db, self , self . krate ( db) . edition ( db) )
386387 }
387388}
388389impl ToNavFromAst for hir:: Struct {
389390 const KIND : SymbolKind = SymbolKind :: Struct ;
390- fn container_name ( self , db : & RootDatabase ) -> Option < SmolStr > {
391+ fn container_name ( self , db : & RootDatabase ) -> Option < Symbol > {
391392 container_name ( db, self , self . krate ( db) . edition ( db) )
392393 }
393394}
394395impl ToNavFromAst for hir:: Enum {
395396 const KIND : SymbolKind = SymbolKind :: Enum ;
396- fn container_name ( self , db : & RootDatabase ) -> Option < SmolStr > {
397+ fn container_name ( self , db : & RootDatabase ) -> Option < Symbol > {
397398 container_name ( db, self , self . krate ( db) . edition ( db) )
398399 }
399400}
@@ -402,19 +403,19 @@ impl ToNavFromAst for hir::Variant {
402403}
403404impl ToNavFromAst for hir:: Union {
404405 const KIND : SymbolKind = SymbolKind :: Union ;
405- fn container_name ( self , db : & RootDatabase ) -> Option < SmolStr > {
406+ fn container_name ( self , db : & RootDatabase ) -> Option < Symbol > {
406407 container_name ( db, self , self . krate ( db) . edition ( db) )
407408 }
408409}
409410impl ToNavFromAst for hir:: TypeAlias {
410411 const KIND : SymbolKind = SymbolKind :: TypeAlias ;
411- fn container_name ( self , db : & RootDatabase ) -> Option < SmolStr > {
412+ fn container_name ( self , db : & RootDatabase ) -> Option < Symbol > {
412413 container_name ( db, self , self . krate ( db) . edition ( db) )
413414 }
414415}
415416impl ToNavFromAst for hir:: Trait {
416417 const KIND : SymbolKind = SymbolKind :: Trait ;
417- fn container_name ( self , db : & RootDatabase ) -> Option < SmolStr > {
418+ fn container_name ( self , db : & RootDatabase ) -> Option < Symbol > {
418419 container_name ( db, self , self . krate ( db) . edition ( db) )
419420 }
420421}
0 commit comments