Files
rust/tests/ui/iterators/iter-macro-not-async-closure-simplified.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

30 lines
805 B
Rust
Raw Normal View History

// This test ensures iterators created with the `iter!` macro are not
// accidentally async closures.
//
// We test this both in a `narrow` and `wide` configuration because
// the way that the diagnostic is emitted varies depending on the
// diagnostic width. If it's too narrow to fit the explanation, that
// explanation is moved to the `help` instead of the span label.
//
//@ edition: 2024
//@ revisions: narrow wide
//@[narrow] compile-flags: --diagnostic-width=20
//@[wide] compile-flags: --diagnostic-width=300
#![feature(yield_expr, iter_macro)]
use std::iter::iter;
fn call_async_once(_: impl AsyncFnOnce()) {}
fn main() {
let f = iter! { move || {
for i in 0..10 {
yield i;
}
}};
call_async_once(f);
//~^ ERROR AsyncFnOnce()` is not satisfied
}