mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +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!()}
|
${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)]
|
#[derive(Debug)]
|
||||||
pub enum DisplaySourceCodeError {
|
pub enum DisplaySourceCodeError {
|
||||||
PathNotFound,
|
PathNotFound,
|
||||||
|
UnknownType,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub enum HirDisplayError {
|
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, "_")?,
|
Ty::Infer(..) => write!(f, "_")?,
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
Loading…
Reference in a new issue