diff options
author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-05-16 20:12:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-16 20:12:16 +0200 |
commit | 426dbcdf9208ff7c58b248e8adb4e933babd8ab1 (patch) | |
tree | 1b09ceb46850e8b4822686b78524ec302fabbb5c /compiler/rustc_middle | |
parent | c78a67b710d19c556cfa279bce8b0e7eeb4e3b7b (diff) | |
parent | f77971e221d4726520b18217eb2acb291fb74ce9 (diff) | |
download | rust-426dbcdf9208ff7c58b248e8adb4e933babd8ab1.tar.gz |
Rollup merge of #111533 - clubby789:drop-tracking-error, r=oli-obk
Handle error body in generator layout
Fixes #111468
I feel like making this query return `Option<GeneratorLayout>` might be better but had some issues with that approach
Diffstat (limited to 'compiler/rustc_middle')
-rw-r--r-- | compiler/rustc_middle/src/query/mod.rs | 2 | ||||
-rw-r--r-- | compiler/rustc_middle/src/ty/util.rs | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/compiler/rustc_middle/src/query/mod.rs b/compiler/rustc_middle/src/query/mod.rs index ef13a277207..f564f5e99e8 100644 --- a/compiler/rustc_middle/src/query/mod.rs +++ b/compiler/rustc_middle/src/query/mod.rs @@ -527,7 +527,7 @@ rustc_queries! { } } - query mir_generator_witnesses(key: DefId) -> &'tcx mir::GeneratorLayout<'tcx> { + query mir_generator_witnesses(key: DefId) -> &'tcx Option<mir::GeneratorLayout<'tcx>> { arena_cache desc { |tcx| "generator witness types for `{}`", tcx.def_path_str(key) } cache_on_disk_if { key.is_local() } diff --git a/compiler/rustc_middle/src/ty/util.rs b/compiler/rustc_middle/src/ty/util.rs index c32ba3edd5c..eb903ebfd99 100644 --- a/compiler/rustc_middle/src/ty/util.rs +++ b/compiler/rustc_middle/src/ty/util.rs @@ -668,10 +668,10 @@ impl<'tcx> TyCtxt<'tcx> { self, def_id: DefId, ) -> impl Iterator<Item = ty::EarlyBinder<Ty<'tcx>>> { - let generator_layout = &self.mir_generator_witnesses(def_id); + let generator_layout = self.mir_generator_witnesses(def_id); generator_layout - .field_tys - .iter() + .as_ref() + .map_or_else(|| [].iter(), |l| l.field_tys.iter()) .filter(|decl| !decl.ignore_for_traits) .map(|decl| ty::EarlyBinder(decl.ty)) } |