Skip to content

Commit 00c80b2

Browse files
bors[bot]Veykril
andauthored
Merge #8055
8055: Implement HirDisplay for some more types r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
2 parents a69f7ce + 4d1e1da commit 00c80b2

File tree

2 files changed

+32
-16
lines changed

2 files changed

+32
-16
lines changed

crates/hir/src/display.rs

+28-2
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ use hir_ty::display::{
1212
use syntax::ast::{self, NameOwner};
1313

1414
use crate::{
15-
Const, ConstParam, Enum, Field, Function, HasVisibility, Module, Static, Struct, Substs, Trait,
16-
Type, TypeAlias, TypeParam, Union, Variant,
15+
Adt, Const, ConstParam, Enum, Field, Function, GenericParam, HasVisibility, LifetimeParam,
16+
Module, Static, Struct, Substs, Trait, Type, TypeAlias, TypeParam, Union, Variant,
1717
};
1818

1919
impl HirDisplay for Function {
@@ -120,6 +120,16 @@ impl HirDisplay for Function {
120120
}
121121
}
122122

123+
impl HirDisplay for Adt {
124+
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
125+
match self {
126+
Adt::Struct(it) => it.hir_fmt(f),
127+
Adt::Union(it) => it.hir_fmt(f),
128+
Adt::Enum(it) => it.hir_fmt(f),
129+
}
130+
}
131+
}
132+
123133
impl HirDisplay for Struct {
124134
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
125135
write_visibility(self.module(f.db).id, self.visibility(f.db), f)?;
@@ -211,6 +221,16 @@ impl HirDisplay for Type {
211221
}
212222
}
213223

224+
impl HirDisplay for GenericParam {
225+
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
226+
match self {
227+
GenericParam::TypeParam(it) => it.hir_fmt(f),
228+
GenericParam::LifetimeParam(it) => it.hir_fmt(f),
229+
GenericParam::ConstParam(it) => it.hir_fmt(f),
230+
}
231+
}
232+
}
233+
214234
impl HirDisplay for TypeParam {
215235
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
216236
write!(f, "{}", self.name(f.db))?;
@@ -224,6 +244,12 @@ impl HirDisplay for TypeParam {
224244
}
225245
}
226246

247+
impl HirDisplay for LifetimeParam {
248+
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
249+
write!(f, "{}", self.name(f.db))
250+
}
251+
}
252+
227253
impl HirDisplay for ConstParam {
228254
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
229255
write!(f, "const {}: ", self.name(f.db))?;

crates/ide/src/hover.rs

+4-14
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use either::Either;
22
use hir::{
3-
Adt, AsAssocItem, AssocItemContainer, GenericParam, HasAttrs, HasSource, HirDisplay, Module,
3+
AsAssocItem, AssocItemContainer, GenericParam, HasAttrs, HasSource, HirDisplay, Module,
44
ModuleDef, Semantics,
55
};
66
use ide_db::{
@@ -339,9 +339,7 @@ fn hover_for_definition(
339339
Definition::ModuleDef(it) => match it {
340340
ModuleDef::Module(it) => from_hir_fmt(db, it, mod_path),
341341
ModuleDef::Function(it) => from_hir_fmt(db, it, mod_path),
342-
ModuleDef::Adt(Adt::Struct(it)) => from_hir_fmt(db, it, mod_path),
343-
ModuleDef::Adt(Adt::Union(it)) => from_hir_fmt(db, it, mod_path),
344-
ModuleDef::Adt(Adt::Enum(it)) => from_hir_fmt(db, it, mod_path),
342+
ModuleDef::Adt(it) => from_hir_fmt(db, it, mod_path),
345343
ModuleDef::Variant(it) => from_hir_fmt(db, it, mod_path),
346344
ModuleDef::Const(it) => from_hir_fmt(db, it, mod_path),
347345
ModuleDef::Static(it) => from_hir_fmt(db, it, mod_path),
@@ -353,18 +351,10 @@ fn hover_for_definition(
353351
},
354352
Definition::Local(it) => hover_for_local(it, db),
355353
Definition::SelfType(impl_def) => {
356-
impl_def.target_ty(db).as_adt().and_then(|adt| match adt {
357-
Adt::Struct(it) => from_hir_fmt(db, it, mod_path),
358-
Adt::Union(it) => from_hir_fmt(db, it, mod_path),
359-
Adt::Enum(it) => from_hir_fmt(db, it, mod_path),
360-
})
354+
impl_def.target_ty(db).as_adt().and_then(|adt| from_hir_fmt(db, adt, mod_path))
361355
}
356+
Definition::GenericParam(it) => from_hir_fmt(db, it, None),
362357
Definition::Label(it) => Some(Markup::fenced_block(&it.name(db))),
363-
Definition::GenericParam(it) => match it {
364-
GenericParam::TypeParam(it) => Some(Markup::fenced_block(&it.display(db))),
365-
GenericParam::LifetimeParam(it) => Some(Markup::fenced_block(&it.name(db))),
366-
GenericParam::ConstParam(it) => Some(Markup::fenced_block(&it.display(db))),
367-
},
368358
};
369359

370360
fn from_hir_fmt<D>(db: &RootDatabase, def: D, mod_path: Option<String>) -> Option<Markup>

0 commit comments

Comments
 (0)