diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2022-09-09 07:02:32 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-09 07:02:32 +0200 |
| commit | bdfbc3597bd9710584e142a2b1a65ba49f9603f2 (patch) | |
| tree | f3802d475f975e475d893369b3b245dfca1ea834 /compiler/rustc_middle | |
| parent | 434591cd136f31d220c0a6b777d0c54dac0915b8 (diff) | |
| parent | 97668a558955ded299db6ef145933be7677e7fbc (diff) | |
| download | rust-bdfbc3597bd9710584e142a2b1a65ba49f9603f2.tar.gz rust-bdfbc3597bd9710584e142a2b1a65ba49f9603f2.zip | |
Rollup merge of #101556 - compiler-errors:tweak-generator-print, r=jackh726
Tweak future opaque ty pretty printing 1. The `Return` type of a generator doesn't need to be a lang item just for diagnostic printing of types 2. We shouldn't suppress the `Output = Ty` of a opaque future if the type is a int or float var.
Diffstat (limited to 'compiler/rustc_middle')
| -rw-r--r-- | compiler/rustc_middle/src/ty/print/pretty.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/rustc_middle/src/ty/print/pretty.rs b/compiler/rustc_middle/src/ty/print/pretty.rs index 1ae3063dae4..979a72d400f 100644 --- a/compiler/rustc_middle/src/ty/print/pretty.rs +++ b/compiler/rustc_middle/src/ty/print/pretty.rs @@ -916,12 +916,14 @@ pub trait PrettyPrinter<'tcx>: // Skip printing `<[generator@] as Generator<_>>::Return` from async blocks, // unless we can find out what generator return type it comes from. let term = if let Some(ty) = term.skip_binder().ty() - && let ty::Projection(ty::ProjectionTy { item_def_id, substs }) = ty.kind() - && Some(*item_def_id) == tcx.lang_items().generator_return() + && let ty::Projection(proj) = ty.kind() + && let assoc = tcx.associated_item(proj.item_def_id) + && assoc.trait_container(tcx) == tcx.lang_items().gen_trait() + && assoc.name == rustc_span::sym::Return { if let ty::Generator(_, substs, _) = substs.type_at(0).kind() { let return_ty = substs.as_generator().return_ty(); - if !return_ty.is_ty_infer() { + if !return_ty.is_ty_var() { return_ty.into() } else { continue; |
