]> git.lizzy.rs Git - rust.git/blob - src/test/ui/type-alias-impl-trait/underconstrained_generic.rs
Check hidden types for well formedness at the definition site instead of only at...
[rust.git] / src / test / ui / type-alias-impl-trait / underconstrained_generic.rs
1 #![feature(type_alias_impl_trait)]
2
3 use std::marker::PhantomData;
4
5 trait Trait {
6     fn foo<T, U>(t: T) -> U;
7 }
8
9 trait ProofForConversion<X> {
10     fn convert<T, U>(_: PhantomData<Self>, r: T) -> U;
11 }
12
13 impl<X: Trait> ProofForConversion<X> for () {
14     fn convert<T, U>(_: PhantomData<Self>, r: T) -> U {
15         X::foo(r)
16     }
17 }
18
19 type Converter<T> = impl ProofForConversion<T>;
20
21 fn _defining_use<T: Trait>() -> Converter<T> {
22     ()
23     //~^ ERROR the trait bound `T: Trait` is not satisfied
24 }
25
26
27 fn main() {
28 }