Implement hover for ConstParam
This commit is contained in:
parent
5771cad451
commit
0ae0909a16
@ -87,6 +87,17 @@ fn short_label(&self) -> Option<String> {
|
||||
}
|
||||
}
|
||||
|
||||
impl ShortLabel for ast::ConstParam {
|
||||
fn short_label(&self) -> Option<String> {
|
||||
let mut buf = "const ".to_owned();
|
||||
buf.push_str(self.name()?.text().as_str());
|
||||
if let Some(type_ref) = self.ty() {
|
||||
format_to!(buf, ": {}", type_ref.syntax());
|
||||
}
|
||||
Some(buf)
|
||||
}
|
||||
}
|
||||
|
||||
fn short_label_from_ty<T>(node: &T, ty: Option<ast::Type>, prefix: &str) -> Option<String>
|
||||
where
|
||||
T: NameOwner + VisibilityOwner,
|
||||
|
@ -371,10 +371,7 @@ fn hover_for_definition(db: &RootDatabase, def: Definition) -> Option<Markup> {
|
||||
Definition::Label(it) => Some(Markup::fenced_block(&it.name(db))),
|
||||
Definition::LifetimeParam(it) => Some(Markup::fenced_block(&it.name(db))),
|
||||
Definition::TypeParam(type_param) => Some(Markup::fenced_block(&type_param.display(db))),
|
||||
Definition::ConstParam(_) => {
|
||||
// FIXME: Hover for generic const param
|
||||
None
|
||||
}
|
||||
Definition::ConstParam(it) => from_def_source(db, it, None),
|
||||
};
|
||||
|
||||
fn from_def_source<A, D>(db: &RootDatabase, def: D, mod_path: Option<String>) -> Option<Markup>
|
||||
@ -3305,4 +3302,21 @@ impl<T: 'static> Foo<T<|>> {}
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn hover_const_param() {
|
||||
check(
|
||||
r#"
|
||||
struct Foo<const LEN: usize>;
|
||||
impl<const LEN: usize> Foo<LEN<|>> {}
|
||||
"#,
|
||||
expect![[r#"
|
||||
*LEN*
|
||||
|
||||
```rust
|
||||
const LEN: usize
|
||||
```
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user