33 lines
787 B
Rust
33 lines
787 B
Rust
|
|
// 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
|
||
|
|
}
|