diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:20:39 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 12:20:39 +0000 |
commit | 1376c5a617be5c25655d0d7cb63e3beaa5a6e026 (patch) | |
tree | 3bb8d61aee02bc7a15eab3f36e3b921afc2075d0 /vendor/futures-macro/src | |
parent | Releasing progress-linux version 1.69.0+dfsg1-1~progress7.99u1. (diff) | |
download | rustc-1376c5a617be5c25655d0d7cb63e3beaa5a6e026.tar.xz rustc-1376c5a617be5c25655d0d7cb63e3beaa5a6e026.zip |
Merging upstream version 1.70.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/futures-macro/src')
-rw-r--r-- | vendor/futures-macro/src/executor.rs | 1 | ||||
-rw-r--r-- | vendor/futures-macro/src/join.rs | 13 | ||||
-rw-r--r-- | vendor/futures-macro/src/select.rs | 2 |
3 files changed, 9 insertions, 7 deletions
diff --git a/vendor/futures-macro/src/executor.rs b/vendor/futures-macro/src/executor.rs index 40a091f94..7f1d0a93f 100644 --- a/vendor/futures-macro/src/executor.rs +++ b/vendor/futures-macro/src/executor.rs @@ -44,6 +44,7 @@ pub(crate) fn test(args: TokenStream, item: TokenStream) -> TokenStream { #path::block_on(async #body) }) .unwrap(), + None, )]; let gen = quote! { diff --git a/vendor/futures-macro/src/join.rs b/vendor/futures-macro/src/join.rs index d427da27a..94e356f72 100644 --- a/vendor/futures-macro/src/join.rs +++ b/vendor/futures-macro/src/join.rs @@ -38,6 +38,7 @@ fn bind_futures(fut_exprs: Vec<Expr>, span: Span) -> (Vec<TokenStream2>, Vec<Ide // Move future into a local so that it is pinned in one place and // is no longer accessible by the end user. let mut #name = __futures_crate::future::maybe_done(#expr); + let mut #name = unsafe { __futures_crate::Pin::new_unchecked(&mut #name) }; }); name }) @@ -58,12 +59,12 @@ pub(crate) fn join(input: TokenStream) -> TokenStream { let poll_futures = future_names.iter().map(|fut| { quote! { __all_done &= __futures_crate::future::Future::poll( - unsafe { __futures_crate::Pin::new_unchecked(&mut #fut) }, __cx).is_ready(); + #fut.as_mut(), __cx).is_ready(); } }); let take_outputs = future_names.iter().map(|fut| { quote! { - unsafe { __futures_crate::Pin::new_unchecked(&mut #fut) }.take_output().unwrap(), + #fut.as_mut().take_output().unwrap(), } }); @@ -96,17 +97,17 @@ pub(crate) fn try_join(input: TokenStream) -> TokenStream { let poll_futures = future_names.iter().map(|fut| { quote! { if __futures_crate::future::Future::poll( - unsafe { __futures_crate::Pin::new_unchecked(&mut #fut) }, __cx).is_pending() + #fut.as_mut(), __cx).is_pending() { __all_done = false; - } else if unsafe { __futures_crate::Pin::new_unchecked(&mut #fut) }.output_mut().unwrap().is_err() { + } else if #fut.as_mut().output_mut().unwrap().is_err() { // `.err().unwrap()` rather than `.unwrap_err()` so that we don't introduce // a `T: Debug` bound. // Also, for an error type of ! any code after `err().unwrap()` is unreachable. #[allow(unreachable_code)] return __futures_crate::task::Poll::Ready( __futures_crate::Err( - unsafe { __futures_crate::Pin::new_unchecked(&mut #fut) }.take_output().unwrap().err().unwrap() + #fut.as_mut().take_output().unwrap().err().unwrap() ) ); } @@ -118,7 +119,7 @@ pub(crate) fn try_join(input: TokenStream) -> TokenStream { // an `E: Debug` bound. // Also, for an ok type of ! any code after `ok().unwrap()` is unreachable. #[allow(unreachable_code)] - unsafe { __futures_crate::Pin::new_unchecked(&mut #fut) }.take_output().unwrap().ok().unwrap(), + #fut.as_mut().take_output().unwrap().ok().unwrap(), } }); diff --git a/vendor/futures-macro/src/select.rs b/vendor/futures-macro/src/select.rs index 0c8e5f1ca..2789b3e65 100644 --- a/vendor/futures-macro/src/select.rs +++ b/vendor/futures-macro/src/select.rs @@ -51,7 +51,7 @@ impl Parse for Select { CaseKind::Default } else { // `<pat> = <expr>` - let pat = input.parse()?; + let pat = Pat::parse_multi_with_leading_vert(input)?; input.parse::<Token![=]>()?; let expr = input.parse()?; CaseKind::Normal(pat, expr) |