mirror of
https://github.com/rust-lang/rust.git
synced 2025-06-04 19:29:07 +00:00
Resolve $crate
in HirDisplay
of Path
This commit is contained in:
parent
ab896e38e1
commit
a247fffdf6
@ -1189,7 +1189,18 @@ impl HirDisplay for Path {
|
|||||||
write!(f, "super")?;
|
write!(f, "super")?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(_, PathKind::DollarCrate(_)) => write!(f, "{{extern_crate}}")?,
|
(_, PathKind::DollarCrate(id)) => {
|
||||||
|
// Resolve `$crate` to the crate's display name.
|
||||||
|
// FIXME: should use the dependency name instead if available, but that depends on
|
||||||
|
// the crate invoking `HirDisplay`
|
||||||
|
let crate_graph = f.db.crate_graph();
|
||||||
|
let name = crate_graph[*id]
|
||||||
|
.display_name
|
||||||
|
.as_ref()
|
||||||
|
.map(|name| name.canonical_name())
|
||||||
|
.unwrap_or("$crate");
|
||||||
|
write!(f, "{name}")?
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (seg_idx, segment) in self.segments().iter().enumerate() {
|
for (seg_idx, segment) in self.segments().iter().enumerate() {
|
||||||
|
@ -4583,3 +4583,33 @@ pub struct Foo;
|
|||||||
"##]],
|
"##]],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn hover_dollar_crate() {
|
||||||
|
// $crate should be resolved to the right crate name.
|
||||||
|
|
||||||
|
check(
|
||||||
|
r#"
|
||||||
|
//- /main.rs crate:main deps:dep
|
||||||
|
dep::m!(KONST$0);
|
||||||
|
//- /dep.rs crate:dep
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! m {
|
||||||
|
( $name:ident ) => { const $name: $crate::Type = $crate::Type; };
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Type;
|
||||||
|
"#,
|
||||||
|
expect![[r#"
|
||||||
|
*KONST*
|
||||||
|
|
||||||
|
```rust
|
||||||
|
main
|
||||||
|
```
|
||||||
|
|
||||||
|
```rust
|
||||||
|
const KONST: dep::Type = $crate::Type
|
||||||
|
```
|
||||||
|
"#]],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user