@@ -5,7 +5,7 @@ use either::Either;
5
5
use hir:: {
6
6
db:: ExpandDatabase , Adt , AsAssocItem , AsExternAssocItem , AssocItemContainer , CaptureKind ,
7
7
DynCompatibilityViolation , HasCrate , HasSource , HirDisplay , Layout , LayoutError ,
8
- MethodViolationCode , Name , Semantics , Symbol , Trait , Type , TypeInfo ,
8
+ MethodViolationCode , Name , Semantics , Symbol , Trait , Type , TypeInfo , VariantDef ,
9
9
} ;
10
10
use ide_db:: {
11
11
base_db:: SourceDatabase ,
@@ -378,7 +378,18 @@ pub(super) fn process_markup(
378
378
379
379
fn definition_owner_name ( db : & RootDatabase , def : & Definition , edition : Edition ) -> Option < String > {
380
380
match def {
381
- Definition :: Field ( f) => Some ( f. parent_def ( db) . name ( db) ) ,
381
+ Definition :: Field ( f) => {
382
+ let parent = f. parent_def ( db) ;
383
+ let parent_name = parent. name ( db) ;
384
+ let parent_name = parent_name. display ( db, edition) . to_string ( ) ;
385
+ return match parent {
386
+ VariantDef :: Variant ( variant) => {
387
+ let enum_name = variant. parent_enum ( db) . name ( db) ;
388
+ Some ( format ! ( "{}::{parent_name}" , enum_name. display( db, edition) ) )
389
+ }
390
+ _ => Some ( parent_name) ,
391
+ } ;
392
+ }
382
393
Definition :: Local ( l) => l. parent ( db) . name ( db) ,
383
394
Definition :: Variant ( e) => Some ( e. parent_enum ( db) . name ( db) ) ,
384
395
0 commit comments