| //@ edition: 2021 |
| //@ revisions: mismatch mismatch_async too_many too_few lt |
| |
| #[cfg(mismatch)] |
| trait Uwu { |
| fn owo(x: ()) -> impl Sized; |
| } |
| |
| #[cfg(mismatch)] |
| impl Uwu for () { |
| fn owo(_: u8) {} |
| //[mismatch]~^ ERROR method `owo` has an incompatible type for trait |
| } |
| |
| #[cfg(mismatch_async)] |
| trait AsyncUwu { |
| async fn owo(x: ()) {} |
| } |
| |
| #[cfg(mismatch_async)] |
| impl AsyncUwu for () { |
| async fn owo(_: u8) {} |
| //[mismatch_async]~^ ERROR method `owo` has an incompatible type for trait |
| } |
| |
| #[cfg(too_many)] |
| trait TooMuch { |
| fn calm_down_please() -> impl Sized; |
| } |
| |
| #[cfg(too_many)] |
| impl TooMuch for () { |
| fn calm_down_please(_: (), _: (), _: ()) {} |
| //[too_many]~^ ERROR method `calm_down_please` has 3 parameters but the declaration in trait `TooMuch::calm_down_please` has 0 |
| } |
| |
| #[cfg(too_few)] |
| trait TooLittle { |
| fn come_on_a_little_more_effort(_: (), _: (), _: ()) -> impl Sized; |
| } |
| |
| #[cfg(too_few)] |
| impl TooLittle for () { |
| fn come_on_a_little_more_effort() {} |
| //[too_few]~^ ERROR method `come_on_a_little_more_effort` has 0 parameters but the declaration in trait `TooLittle::come_on_a_little_more_effort` has 3 |
| } |
| |
| #[cfg(lt)] |
| trait Lifetimes { |
| fn early<'early, T>(x: &'early T) -> impl Sized; |
| } |
| |
| #[cfg(lt)] |
| impl Lifetimes for () { |
| fn early<'late, T>(_: &'late ()) {} |
| //[lt]~^ ERROR method `early` has an incompatible type for trait |
| } |
| |
| fn main() {} |