about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJonas Schievink <jonasschievink@gmail.com>2020-02-04 13:52:09 +0100
committerJonas Schievink <jonasschievink@gmail.com>2020-02-04 13:52:09 +0100
commit895aab22633abe3e8617c3e2aaa246a7b2ff1492 (patch)
tree01ef0f250b53ff26105f3853feab8c4938642748
parent72776e6b5d355112ad5d320789cc2b3c6232b953 (diff)
downloadrust-895aab22633abe3e8617c3e2aaa246a7b2ff1492.tar.gz
rust-895aab22633abe3e8617c3e2aaa246a7b2ff1492.zip
Take resume argument from the right generator type
I suppose we could also just put `tcx.mk_unit()` here, but this
works too
-rw-r--r--src/librustc_mir_build/build/mod.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/librustc_mir_build/build/mod.rs b/src/librustc_mir_build/build/mod.rs
index 4c8d8e3a0ea..ccfee2d2bb2 100644
--- a/src/librustc_mir_build/build/mod.rs
+++ b/src/librustc_mir_build/build/mod.rs
@@ -83,12 +83,18 @@ fn mir_build(tcx: TyCtxt<'_>, def_id: DefId) -> BodyAndCache<'_> {
                     abi = Abi::Rust;
                     vec![ArgInfo(liberated_closure_env_ty(tcx, id, body_id), None, None, None)]
                 }
-                ty::Generator(def_id, substs, _) => {
+                ty::Generator(def_id, _, _) => {
                     let gen_ty = tcx.body_tables(body_id).node_type(id);
-                    let resume_ty = substs.as_generator().resume_ty(def_id, tcx);
 
                     // The resume argument may be missing, in that case we need to provide it here.
                     if body.params.is_empty() {
+                        let resume_ty = match gen_ty.kind {
+                            ty::Generator(_, substs, _) => {
+                                substs.as_generator().resume_ty(def_id, tcx)
+                            }
+                            _ => bug!(),
+                        };
+
                         vec![
                             ArgInfo(gen_ty, None, None, None),
                             ArgInfo(resume_ty, None, None, None),