mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-25 11:17:13 +00:00
Don't mark unknown type as implementing every notable trait
Because the new solver, will return "yes" for them (which is a good thing).
This commit is contained in:
parent
760d378e4c
commit
4dbb8b4c64
@ -483,6 +483,12 @@ fn notable_traits<'db>(
|
||||
db: &'db RootDatabase,
|
||||
ty: &hir::Type<'db>,
|
||||
) -> Vec<(hir::Trait, Vec<(Option<hir::Type<'db>>, hir::Name)>)> {
|
||||
if ty.is_unknown() {
|
||||
// The trait solver returns "yes" to the question whether the error type
|
||||
// impls any trait, and we don't want to show it as having any notable trait.
|
||||
return Vec::new();
|
||||
}
|
||||
|
||||
db.notable_traits_in_deps(ty.krate(db).into())
|
||||
.iter()
|
||||
.flat_map(|it| &**it)
|
||||
|
@ -11097,3 +11097,26 @@ impl Enum<'_, Borrowed> {
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn unknown_should_not_implement_notable_traits() {
|
||||
check(
|
||||
r#"
|
||||
//- minicore: future, iterator
|
||||
fn foo() {
|
||||
let x$0;
|
||||
}
|
||||
"#,
|
||||
expect![[r#"
|
||||
*x*
|
||||
|
||||
```rust
|
||||
let x: {unknown}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
no Drop
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user