2 // pretty-expanded FIXME #23616
5 #![feature(iter_empty)]
7 #![feature(str_escape)]
9 use std::iter::{empty, once, repeat};
11 fn is_sync<T>(_: T) where T: Sync {}
12 fn is_send<T>(_: T) where T: Send {}
14 macro_rules! all_sync_send {
15 ($ctor:expr, $iter:ident) => ({
21 ($ctor:expr, $iter:ident($($param:expr),+)) => ({
23 is_sync(x.$iter($( $param ),+));
25 is_send(y.$iter($( $param ),+));
27 ($ctor:expr, $iter:ident, $($rest:tt)*) => ({
28 all_sync_send!($ctor, $iter);
29 all_sync_send!($ctor, $($rest)*);
31 ($ctor:expr, $iter:ident($($param:expr),+), $($rest:tt)*) => ({
32 all_sync_send!($ctor, $iter($( $param ),+));
33 all_sync_send!($ctor, $($rest)*);
37 macro_rules! all_sync_send_mutable_ref {
38 ($ctor:expr, $($iter:ident),+) => ({
41 is_sync((&mut x).$iter());
43 is_send((&mut y).$iter());
48 macro_rules! is_sync_send {
59 all_sync_send!("Я", escape_debug, escape_default, escape_unicode);
62 all_sync_send_mutable_ref!([1], iter);
64 // Bytes implements DoubleEndedIterator
65 all_sync_send!("a".bytes(), rev);
69 all_sync_send!(a.iter(),
76 filter_map(|_| Some(1)),
83 scan(1, |_, _| Some(1)),
84 flat_map(|_| b.iter()),
88 is_sync_send!((1..).step_by(2));
89 is_sync_send!((1..2).step_by(2));
90 is_sync_send!((1..2));
92 is_sync_send!(repeat(1));
93 is_sync_send!(empty::<usize>());
94 is_sync_send!(once(1));