// Regression test for #88653, where a confusing warning about a // type mismatch in coroutine arguments was issued. #![feature(coroutines, coroutine_trait)] use std::ops::Coroutine; fn foo(bar: bool) -> impl Coroutine<(bool,)> { //~^ ERROR: type mismatch in coroutine arguments [E0631] //~| NOTE: expected due to this //~| NOTE: expected coroutine signature `fn((bool,)) -> _` //~| NOTE: in this expansion of desugaring of `impl Trait` //~| NOTE: in this expansion of desugaring of `impl Trait` #[coroutine] |bar| { //~^ NOTE: found signature defined here //~| NOTE: return type was inferred to be if bar { yield bar; } } } fn main() {}