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.
This commit is contained in:
parent
64165aac68
commit
9f03cfc207
32 changed files with 149 additions and 361 deletions
|
@ -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!(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue