| // 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 |
| } |