// ignore-tidy-linelength #![feature(type_alias_impl_trait)] pub trait Bar { type E: Copy; fn foo() -> Self::E; } impl Bar for S { type E = impl Copy; //~^ ERROR the trait bound `S: std::marker::Copy` is not satisfied in `(S, T)` [E0277] //~^^ ERROR the trait bound `T: std::marker::Copy` is not satisfied in `(S, T)` [E0277] fn foo() -> Self::E { //~^ ERROR type parameter `T` is part of concrete type but not used in parameter list for the `impl Trait` type alias (S::default(), T::default()) } } fn main() {}