// This test ensures iterators created with the `iter!` macro are not // accidentally async closures. // //@ edition: 2024 //@ remap-src-base #![feature(yield_expr, iter_macro)] use std::task::{Waker, Context}; use std::iter::iter; use std::pin::pin; use std::future::Future; async fn call_async_once(f: impl AsyncFnOnce()) { f().await } fn main() { let f = iter! { move || { for i in 0..10 { yield i; } }}; let x = pin!(call_async_once(f)); //~^ ERROR AsyncFnOnce()` is not satisfied //~^^ ERROR AsyncFnOnce()` is not satisfied //~^^^ ERROR AsyncFnOnce()` is not satisfied //~^^^^ ERROR AsyncFnOnce()` is not satisfied x.poll(&mut Context::from_waker(Waker::noop())); //~^ ERROR AsyncFnOnce()` is not satisfied }