diff options
Diffstat (limited to 'tests/ui/type-alias-impl-trait/underconstrained_generic.rs')
-rw-r--r-- | tests/ui/type-alias-impl-trait/underconstrained_generic.rs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/ui/type-alias-impl-trait/underconstrained_generic.rs b/tests/ui/type-alias-impl-trait/underconstrained_generic.rs new file mode 100644 index 000000000..aa537dfc9 --- /dev/null +++ b/tests/ui/type-alias-impl-trait/underconstrained_generic.rs @@ -0,0 +1,28 @@ +#![feature(type_alias_impl_trait)] + +use std::marker::PhantomData; + +trait Trait { + fn foo<T, U>(t: T) -> U; +} + +trait ProofForConversion<X> { + fn convert<T, U>(_: PhantomData<Self>, r: T) -> U; +} + +impl<X: Trait> ProofForConversion<X> for () { + fn convert<T, U>(_: PhantomData<Self>, r: T) -> U { + X::foo(r) + } +} + +type Converter<T> = impl ProofForConversion<T>; + +fn _defining_use<T: Trait>() -> Converter<T> { + () + //~^ ERROR the trait bound `T: Trait` is not satisfied +} + + +fn main() { +} |