diff options
| author | Jonas Schievink <jonasschievink@gmail.com> | 2020-02-04 13:52:09 +0100 |
|---|---|---|
| committer | Jonas Schievink <jonasschievink@gmail.com> | 2020-02-04 13:52:09 +0100 |
| commit | 895aab22633abe3e8617c3e2aaa246a7b2ff1492 (patch) | |
| tree | 01ef0f250b53ff26105f3853feab8c4938642748 | |
| parent | 72776e6b5d355112ad5d320789cc2b3c6232b953 (diff) | |
| download | rust-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.rs | 10 |
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