summaryrefslogtreecommitdiffstats
path: root/tests/ui/suggestions/trait-with-missing-associated-type-restriction-fixable.rs
blob: 7bd38d0d45d90c1314bb0aeea83487b6c6a908c2 (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
// run-rustfix
#![allow(unused)] // for the fixed file

trait Trait<T = Self> {
    type A;

    fn func(&self) -> Self::A;
}

struct S<T>(T);
impl<K> S<K> {
    fn foo<'a, T: Trait + 'a>(&self, _: impl Trait, x: impl Trait, _: T) {
        qux(x.func()) //~ ERROR mismatched types
    }

    fn ban<T>(x: T) where T: Trait {
        qux(x.func()) //~ ERROR mismatched types
    }
}

fn foo<'a, T: Trait + 'a>(_: impl Trait, x: impl Trait, _: T) {
    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) {
    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() {}