hir: show const value in hover
This commit is contained in:
parent
add6cccd4c
commit
4fbc4b9356
@ -401,7 +401,8 @@ fn write_where_clause(def: GenericDefId, f: &mut HirFormatter) -> Result<(), Hir
|
|||||||
|
|
||||||
impl HirDisplay for Const {
|
impl HirDisplay for Const {
|
||||||
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
|
fn hir_fmt(&self, f: &mut HirFormatter) -> Result<(), HirDisplayError> {
|
||||||
write_visibility(self.module(f.db).id, self.visibility(f.db), f)?;
|
let module_id = self.module(f.db).id;
|
||||||
|
write_visibility(module_id, self.visibility(f.db), f)?;
|
||||||
let data = f.db.const_data(self.id);
|
let data = f.db.const_data(self.id);
|
||||||
write!(f, "const ")?;
|
write!(f, "const ")?;
|
||||||
match &data.name {
|
match &data.name {
|
||||||
@ -409,6 +410,15 @@ impl HirDisplay for Const {
|
|||||||
None => write!(f, "_: ")?,
|
None => write!(f, "_: ")?,
|
||||||
}
|
}
|
||||||
data.type_ref.hir_fmt(f)?;
|
data.type_ref.hir_fmt(f)?;
|
||||||
|
let ast_id_map = f.db.ast_id_map(data.file_id);
|
||||||
|
let ast_node = ast_id_map.get(data.ast_id);
|
||||||
|
if let Some(syntax_node) = f.db.parse_or_expand(data.file_id) {
|
||||||
|
let ast_node = ast_node.to_node(&syntax_node);
|
||||||
|
if let Some(body) = ast_node.body() {
|
||||||
|
write!(f, " = {}", body)?;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use hir_expand::{name::Name, InFile};
|
use hir_expand::{ast_id_map::FileAstId, name::Name, HirFileId, InFile};
|
||||||
use syntax::ast;
|
use syntax::ast;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
@ -255,6 +255,8 @@ pub struct ConstData {
|
|||||||
pub name: Option<Name>,
|
pub name: Option<Name>,
|
||||||
pub type_ref: Interned<TypeRef>,
|
pub type_ref: Interned<TypeRef>,
|
||||||
pub visibility: RawVisibility,
|
pub visibility: RawVisibility,
|
||||||
|
pub ast_id: FileAstId<ast::Const>,
|
||||||
|
pub file_id: HirFileId,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ConstData {
|
impl ConstData {
|
||||||
@ -267,6 +269,8 @@ impl ConstData {
|
|||||||
name: konst.name.clone(),
|
name: konst.name.clone(),
|
||||||
type_ref: konst.type_ref.clone(),
|
type_ref: konst.type_ref.clone(),
|
||||||
visibility: item_tree[konst.visibility].clone(),
|
visibility: item_tree[konst.visibility].clone(),
|
||||||
|
ast_id: konst.ast_id.clone(),
|
||||||
|
file_id: loc.id.file_id(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -503,16 +503,16 @@ fn hover_const_static() {
|
|||||||
check(
|
check(
|
||||||
r#"const foo$0: u32 = 123;"#,
|
r#"const foo$0: u32 = 123;"#,
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
*foo*
|
*foo*
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
test
|
test
|
||||||
```
|
```
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
const foo: u32
|
const foo: u32 = 123
|
||||||
```
|
```
|
||||||
"#]],
|
"#]],
|
||||||
);
|
);
|
||||||
check(
|
check(
|
||||||
r#"static foo$0: u32 = 456;"#,
|
r#"static foo$0: u32 = 456;"#,
|
||||||
@ -788,16 +788,16 @@ fn main() {
|
|||||||
}
|
}
|
||||||
"#,
|
"#,
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
*C*
|
*C*
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
test
|
test
|
||||||
```
|
```
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
const C: u32
|
const C: u32 = 1
|
||||||
```
|
```
|
||||||
"#]],
|
"#]],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3176,20 +3176,20 @@ fn foo() {
|
|||||||
}
|
}
|
||||||
"#,
|
"#,
|
||||||
expect![[r#"
|
expect![[r#"
|
||||||
*FOO*
|
*FOO*
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
test
|
test
|
||||||
```
|
```
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
const FOO: usize
|
const FOO: usize = 3
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This is a doc
|
This is a doc
|
||||||
"#]],
|
"#]],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user