Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide/src/hover/render.rs')
-rw-r--r--crates/ide/src/hover/render.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/crates/ide/src/hover/render.rs b/crates/ide/src/hover/render.rs
index 3f0fc85134..ee96767411 100644
--- a/crates/ide/src/hover/render.rs
+++ b/crates/ide/src/hover/render.rs
@@ -411,8 +411,21 @@ pub(super) fn definition(
Definition::Trait(trait_) => {
trait_.display_limited(db, config.max_trait_assoc_items_count).to_string()
}
- Definition::Adt(Adt::Struct(struct_)) => {
- struct_.display_limited(db, config.max_struct_field_count).to_string()
+ Definition::Adt(adt @ (Adt::Struct(_) | Adt::Union(_))) => {
+ adt.display_limited(db, config.max_fields_count).to_string()
+ }
+ Definition::Variant(variant) => {
+ variant.display_limited(db, config.max_fields_count).to_string()
+ }
+ Definition::Adt(adt @ Adt::Enum(_)) => {
+ adt.display_limited(db, config.max_enum_variants_count).to_string()
+ }
+ Definition::SelfType(impl_def) => {
+ let self_ty = &impl_def.self_ty(db);
+ match self_ty.as_adt() {
+ Some(adt) => adt.display_limited(db, config.max_fields_count).to_string(),
+ None => self_ty.display(db).to_string(),
+ }
}
Definition::Macro(it) => {
let mut label = it.display(db).to_string();