mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-25 20:43:21 +00:00
Merge #6845
6845: Don't HirDisplay unknown types when displaying for source r=Veykril a=Veykril Was wondering why the add missing impl assist didn't do anything here: ![Code_JCA1Qo0V9P](https://user-images.githubusercontent.com/3757771/101990300-7af44a80-3ca6-11eb-8431-e5eb4de4e78c.png) Turns out me forgetting to set the Index::Idx type in the trait causes RA to panic due to it trying to to create an unparsable type in the `make` module. Now we get this instead which imo is definitely better to have. ![Code_MUFPJUCULY](https://user-images.githubusercontent.com/3757771/101990347-c9094e00-3ca6-11eb-9c6a-146bddf64b7c.png) Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
This commit is contained in:
commit
a15d19619e
2 changed files with 34 additions and 1 deletions
|
@ -781,6 +781,31 @@ impl Test for () {
|
|||
${0:todo!()}
|
||||
}
|
||||
}
|
||||
"#,
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn missing_generic_type() {
|
||||
check_assist(
|
||||
add_missing_impl_members,
|
||||
r#"
|
||||
trait Foo<BAR> {
|
||||
fn foo(&self, bar: BAR);
|
||||
}
|
||||
impl Foo for () {
|
||||
<|>
|
||||
}
|
||||
"#,
|
||||
r#"
|
||||
trait Foo<BAR> {
|
||||
fn foo(&self, bar: BAR);
|
||||
}
|
||||
impl Foo for () {
|
||||
fn foo(&self, bar: BAR) {
|
||||
${0:todo!()}
|
||||
}
|
||||
}
|
||||
"#,
|
||||
)
|
||||
}
|
||||
|
|
|
@ -178,6 +178,7 @@ impl DisplayTarget {
|
|||
#[derive(Debug)]
|
||||
pub enum DisplaySourceCodeError {
|
||||
PathNotFound,
|
||||
UnknownType,
|
||||
}
|
||||
|
||||
pub enum HirDisplayError {
|
||||
|
@ -558,7 +559,14 @@ impl HirDisplay for Ty {
|
|||
}
|
||||
};
|
||||
}
|
||||
Ty::Unknown => write!(f, "{{unknown}}")?,
|
||||
Ty::Unknown => {
|
||||
if f.display_target.is_source_code() {
|
||||
return Err(HirDisplayError::DisplaySourceCodeError(
|
||||
DisplaySourceCodeError::UnknownType,
|
||||
));
|
||||
}
|
||||
write!(f, "{{unknown}}")?;
|
||||
}
|
||||
Ty::Infer(..) => write!(f, "_")?,
|
||||
}
|
||||
Ok(())
|
||||
|
|
Loading…
Reference in a new issue