diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2024-12-25 05:54:21 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-25 05:54:21 +0000 |
| commit | 022bece913ef6dfd1010b127ac5fda9db7cd0ece (patch) | |
| tree | 9a87e4bad1a7a512dc66141f8969f37092804994 /src | |
| parent | 96f068c169928a35110193ee49761b3010330d4f (diff) | |
| parent | 9e7d29688f8d3bf45ea6587b0f5b3398f7f70e56 (diff) | |
| download | rust-022bece913ef6dfd1010b127ac5fda9db7cd0ece.tar.gz rust-022bece913ef6dfd1010b127ac5fda9db7cd0ece.zip | |
Merge pull request #18756 from roife/fix-18751
fix missing name enum when hovering on fields in variants
Diffstat (limited to 'src')
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide/src/hover/render.rs | 15 | ||||
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide/src/hover/tests.rs | 2 |
2 files changed, 14 insertions, 3 deletions
diff --git a/src/tools/rust-analyzer/crates/ide/src/hover/render.rs b/src/tools/rust-analyzer/crates/ide/src/hover/render.rs index 8c5c27c47cb..119a864eb96 100644 --- a/src/tools/rust-analyzer/crates/ide/src/hover/render.rs +++ b/src/tools/rust-analyzer/crates/ide/src/hover/render.rs @@ -5,7 +5,7 @@ use either::Either; use hir::{ db::ExpandDatabase, Adt, AsAssocItem, AsExternAssocItem, AssocItemContainer, CaptureKind, DynCompatibilityViolation, HasCrate, HasSource, HirDisplay, Layout, LayoutError, - MethodViolationCode, Name, Semantics, Symbol, Trait, Type, TypeInfo, + MethodViolationCode, Name, Semantics, Symbol, Trait, Type, TypeInfo, VariantDef, }; use ide_db::{ base_db::SourceDatabase, @@ -378,7 +378,18 @@ pub(super) fn process_markup( fn definition_owner_name(db: &RootDatabase, def: &Definition, edition: Edition) -> Option<String> { match def { - Definition::Field(f) => Some(f.parent_def(db).name(db)), + Definition::Field(f) => { + let parent = f.parent_def(db); + let parent_name = parent.name(db); + let parent_name = parent_name.display(db, edition).to_string(); + return match parent { + VariantDef::Variant(variant) => { + let enum_name = variant.parent_enum(db).name(db); + Some(format!("{}::{parent_name}", enum_name.display(db, edition))) + } + _ => Some(parent_name), + }; + } Definition::Local(l) => l.parent(db).name(db), Definition::Variant(e) => Some(e.parent_enum(db).name(db)), diff --git a/src/tools/rust-analyzer/crates/ide/src/hover/tests.rs b/src/tools/rust-analyzer/crates/ide/src/hover/tests.rs index cc926a5b568..ed8cd64cdbe 100644 --- a/src/tools/rust-analyzer/crates/ide/src/hover/tests.rs +++ b/src/tools/rust-analyzer/crates/ide/src/hover/tests.rs @@ -7294,7 +7294,7 @@ enum Enum { *field* ```rust - ra_test_fixture::RecordV + ra_test_fixture::Enum::RecordV ``` ```rust |
