blob: 0d90e449523a3544fd1605f233815208e158e550 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
// These are all the possible variations of this error I could think of for.
// `trait-with-missing-associated-type-restriction-fixable.rs` contains the subset of these that
// can be fixed with `rustfix`.
trait Trait<T = Self> {
type A;
fn func(&self) -> Self::A;
fn funk(&self, _: Self::A);
fn funq(&self) -> Self::A {} //~ ERROR mismatched types
}
fn foo(_: impl Trait, x: impl Trait) {
qux(x.func()) //~ ERROR mismatched types
}
fn bar<T: Trait>(x: T) {
qux(x.func()) //~ ERROR mismatched types
}
fn foo2(x: impl Trait<i32>) {
qux(x.func()) //~ ERROR mismatched types
}
fn bar2<T: Trait<i32>>(x: T) {
x.funk(3); //~ ERROR mismatched types
qux(x.func()) //~ ERROR mismatched types
}
fn baz<D: std::fmt::Debug, T: Trait<A = D>>(x: T) {
qux(x.func()) //~ ERROR mismatched types
}
fn bat(x: &mut dyn Trait<(), A = ()>) {
qux(x.func()) //~ ERROR mismatched types
}
fn ban<T>(x: T) where T: Trait {
qux(x.func()) //~ ERROR mismatched types
}
fn qux(_: usize) {}
fn main() {}
|