Don't HirDisplay unknown types when displaying for source

This commit is contained in:
Lukas Wirth 2020-12-12 18:18:19 +01:00
parent 91bf15a2f5
commit 69b78edb5e
2 changed files with 34 additions and 1 deletions

View file

@ -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!()}
}
}
"#, "#,
) )
} }

View file

@ -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(())