diff options
| author | Arpad Borsos <swatinem@swatinem.de> | 2022-11-24 17:58:32 +0100 |
|---|---|---|
| committer | Arpad Borsos <arpad.borsos@sentry.io> | 2023-03-08 15:37:14 +0100 |
| commit | 9f03cfc20712946725138c29dd6c78b64ee2bc90 (patch) | |
| tree | b7c106da8b062fbbcd68add968c0986b81a575c6 /compiler/rustc_trait_selection/src | |
| parent | 64165aac68af780182ff89a6eb3982e3c262266e (diff) | |
| download | rust-9f03cfc20712946725138c29dd6c78b64ee2bc90.tar.gz rust-9f03cfc20712946725138c29dd6c78b64ee2bc90.zip | |
Remove `identity_future` indirection
This was previously needed because the indirection used to hide some unexplained lifetime errors, which it turned out were related to the `min_choice` algorithm. Removing the indirection also solves a couple of cycle errors, large moves and makes async blocks support the `#[track_caller]` annotation.
Diffstat (limited to 'compiler/rustc_trait_selection/src')
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs index 66d74fd05a6..b6e70bd9e33 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -3025,8 +3025,6 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { } }; - let identity_future = tcx.require_lang_item(LangItem::IdentityFuture, None); - // Don't print the tuple of capture types 'print: { if !is_upvar_tys_infer_tuple { @@ -3039,12 +3037,7 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { None => err.note(&msg), }, ty::Alias(ty::Opaque, ty::AliasTy { def_id, .. }) => { - // Avoid printing the future from `core::future::identity_future`, it's not helpful - if tcx.parent(*def_id) == identity_future { - break 'print; - } - - // If the previous type is `identity_future`, this is the future generated by the body of an async function. + // If the previous type is async fn, this is the future generated by the body of an async function. // Avoid printing it twice (it was already printed in the `ty::Generator` arm below). let is_future = tcx.ty_is_opaque_future(ty); debug!( |
