#![feature(coroutines, proc_macro_hygiene, stmt_expr_attributes)]
mod for_await {
use futures_async_stream::{for_await, stream};
#[stream(item = ())]
async fn stream() {}
async fn unexpected1() {
#[for_await(bar)] for () in stream() {}
}
async fn unexpected2() {
#[for_await()] for () in stream() {}
}
#[stream(item = i32)]
async fn unexpected_in_fn1() {
#[for_await(bar)] for () in stream() {}
}
#[stream(item = i32)]
async fn unexpected_in_fn2() {
#[for_await()] for () in stream() {}
}
}
mod stream {
use futures_async_stream::stream;
#[stream] async fn expected_item() {}
#[stream(item)] async fn expected_eq() {}
#[stream(item = )] async fn expected_ty() {}
#[stream(baz, item = i32)] async fn unexpected_first() {}
#[stream(item = i32, baz)] async fn unexpected_second() {}
#[stream(boxed, item = i32)] async fn boxed_first() {}
#[stream(,item = i32)] async fn unexpected_comma() {}
#[stream(item = i32 item = i32)] async fn expected_comma() {}
#[stream(item = i32, item = i32)] async fn duplicate_item() {}
#[stream(item = i32, boxed, boxed)] async fn duplicate_boxed() {}
#[stream(item = i32, boxed_local, boxed_local)] async fn duplicate_boxed_local() {}
#[stream(item = i32, boxed_local, boxed)] async fn combine() {}
}
mod try_stream {
use futures_async_stream::try_stream;
#[try_stream] async fn expected_ok1() {}
#[try_stream(error = ())] async fn expected_ok2() {}
#[try_stream(ok)] async fn expected_ok_eq() {}
#[try_stream(ok = )] async fn expected_ok_ty() {}
#[try_stream(ok = ())] async fn expected_error() {}
#[try_stream(error)] async fn expected_error_eq() {}
#[try_stream(error = )] async fn expected_error_ty() {}
#[try_stream(baz, ok = (), error = ())] async fn unexpected_first() {}
#[try_stream(ok = (), baz, error = ())] async fn unexpected_second() {}
#[try_stream(ok = (), error = (), baz)] async fn unexpected_third() {}
#[try_stream(boxed, ok = (), error = ())] async fn boxed_first() {}
#[try_stream(,ok = () error = ())] async fn unexpected_comma() {}
#[try_stream(ok = () error = ())] async fn expected_comma1() {}
#[try_stream(ok = (), error = () error = ())] async fn expected_comma2() {}
#[try_stream(ok = (), ok = (), error = ())] async fn duplicate_ok1() {}
#[try_stream(ok = (), error = (), ok = (), error = ())] async fn duplicate_ok2() {}
#[try_stream(ok = (), error = (), error = ())] async fn duplicate_error() {}
#[try_stream(ok = (), error = (), boxed, boxed)] async fn duplicate_boxed() {}
#[try_stream(ok = (), error = (), boxed_local, boxed_local)] async fn duplicate_boxed_local() {}
#[try_stream(ok = (), error = (), boxed_local, boxed)] async fn combine() {}
}
fn main() {}