Skip to content

Commit e9d9ff3

Browse files
committed
fix empty join! and try_join!
Fixes: #5502
1 parent c894069 commit e9d9ff3

File tree

4 files changed

+17
-2
lines changed

4 files changed

+17
-2
lines changed

tokio/src/macros/join.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,9 @@ macro_rules! join {
158158

159159
// ===== Entry point =====
160160

161-
( $($e:expr),* $(,)?) => {
161+
( $($e:expr),+ $(,)?) => {
162162
$crate::join!(@{ () (0) } $($e,)*)
163163
};
164+
165+
() => { async {}.await }
164166
}

tokio/src/macros/try_join.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,9 @@ macro_rules! try_join {
210210

211211
// ===== Entry point =====
212212

213-
( $($e:expr),* $(,)?) => {
213+
( $($e:expr),+ $(,)?) => {
214214
$crate::try_join!(@{ () (0) } $($e,)*)
215215
};
216+
217+
() => { async { Ok(()) }.await }
216218
}

tokio/tests/macros_join.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,3 +153,9 @@ async fn a_different_future_is_polled_first_every_time_poll_fn_is_polled() {
153153
*poll_order.lock().unwrap()
154154
);
155155
}
156+
157+
#[tokio::test]
158+
#[allow(clippy::unit_cmp)]
159+
async fn empty_join() {
160+
assert_eq!(tokio::join!(), ());
161+
}

tokio/tests/macros_try_join.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,3 +183,8 @@ async fn a_different_future_is_polled_first_every_time_poll_fn_is_polled() {
183183
*poll_order.lock().unwrap()
184184
);
185185
}
186+
187+
#[tokio::test]
188+
async fn empty_try_join() {
189+
assert_eq!(tokio::try_join!() as Result<_, ()>, Ok(()));
190+
}

0 commit comments

Comments
 (0)