summaryrefslogtreecommitdiff
path: root/compiler/rustc_mir_transform
diff options
context:
space:
mode:
authorclubby789 <jamie@hill-daniel.co.uk>2023-05-13 13:19:01 +0100
committerclubby789 <jamie@hill-daniel.co.uk>2023-05-13 16:45:19 +0100
commitf77971e221d4726520b18217eb2acb291fb74ce9 (patch)
treedd1d7279a3ecf00afd196521081bf86dfa07fafd /compiler/rustc_mir_transform
parent69fef92ab2f287f072b66fb7b4f62c8bb4acba43 (diff)
downloadrust-f77971e221d4726520b18217eb2acb291fb74ce9.tar.gz
Handle error body when in generator layout
Diffstat (limited to 'compiler/rustc_mir_transform')
-rw-r--r--compiler/rustc_mir_transform/src/generator.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/compiler/rustc_mir_transform/src/generator.rs b/compiler/rustc_mir_transform/src/generator.rs
index c9144729145..891e446942e 100644
--- a/compiler/rustc_mir_transform/src/generator.rs
+++ b/compiler/rustc_mir_transform/src/generator.rs
@@ -1397,7 +1397,7 @@ fn create_cases<'tcx>(
pub(crate) fn mir_generator_witnesses<'tcx>(
tcx: TyCtxt<'tcx>,
def_id: LocalDefId,
-) -> GeneratorLayout<'tcx> {
+) -> Option<GeneratorLayout<'tcx>> {
assert!(tcx.sess.opts.unstable_opts.drop_tracking_mir);
let (body, _) = tcx.mir_promoted(def_id);
@@ -1410,6 +1410,7 @@ pub(crate) fn mir_generator_witnesses<'tcx>(
// Get the interior types and substs which typeck computed
let movable = match *gen_ty.kind() {
ty::Generator(_, _, movability) => movability == hir::Movability::Movable,
+ ty::Error(_) => return None,
_ => span_bug!(body.span, "unexpected generator type {}", gen_ty),
};
@@ -1425,7 +1426,7 @@ pub(crate) fn mir_generator_witnesses<'tcx>(
check_suspend_tys(tcx, &generator_layout, &body);
- generator_layout
+ Some(generator_layout)
}
impl<'tcx> MirPass<'tcx> for StateTransform {