@@ -5,7 +5,7 @@ use either::Either;
55use hir:: {
66 db:: ExpandDatabase , Adt , AsAssocItem , AsExternAssocItem , AssocItemContainer , CaptureKind ,
77 DynCompatibilityViolation , HasCrate , HasSource , HirDisplay , Layout , LayoutError ,
8- MethodViolationCode , Name , Semantics , Symbol , Trait , Type , TypeInfo ,
8+ MethodViolationCode , Name , Semantics , Symbol , Trait , Type , TypeInfo , VariantDef ,
99} ;
1010use ide_db:: {
1111 base_db:: SourceDatabase ,
@@ -378,7 +378,18 @@ pub(super) fn process_markup(
378378
379379fn definition_owner_name ( db : & RootDatabase , def : & Definition , edition : Edition ) -> Option < String > {
380380 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+ }
382393 Definition :: Local ( l) => l. parent ( db) . name ( db) ,
383394 Definition :: Variant ( e) => Some ( e. parent_enum ( db) . name ( db) ) ,
384395
0 commit comments