Skip to content

Commit 022bece

Browse files
authored
Merge pull request rust-lang#18756 from roife/fix-18751
fix missing name enum when hovering on fields in variants
2 parents 96f068c + 9e7d296 commit 022bece

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/tools/rust-analyzer/crates/ide/src/hover/render.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use either::Either;
55
use 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
};
1010
use ide_db::{
1111
base_db::SourceDatabase,
@@ -378,7 +378,18 @@ pub(super) fn process_markup(
378378

379379
fn 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

src/tools/rust-analyzer/crates/ide/src/hover/tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7294,7 +7294,7 @@ enum Enum {
72947294
*field*
72957295
72967296
```rust
7297-
ra_test_fixture::RecordV
7297+
ra_test_fixture::Enum::RecordV
72987298
```
72997299
73007300
```rust

0 commit comments

Comments
 (0)