about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src/shim.rs
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-07-25 14:02:33 -0400
committerMichael Goulet <michael@errs.io>2024-07-26 12:53:53 -0400
commitd5656059a1e517d9c7b228d21a4134e097e20e00 (patch)
tree18bfa630322f5574f91e9da72b76b3902964eabb /compiler/rustc_mir_transform/src/shim.rs
parent2d5a628a1de1d38318909a710ef37da6251e362e (diff)
downloadrust-d5656059a1e517d9c7b228d21a4134e097e20e00.tar.gz
rust-d5656059a1e517d9c7b228d21a4134e097e20e00.zip
Make coroutine-closures possible to be cloned
Diffstat (limited to 'compiler/rustc_mir_transform/src/shim.rs')
-rw-r--r--compiler/rustc_mir_transform/src/shim.rs3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/rustc_mir_transform/src/shim.rs b/compiler/rustc_mir_transform/src/shim.rs
index 19e3bf5a599..d2f50040821 100644
--- a/compiler/rustc_mir_transform/src/shim.rs
+++ b/compiler/rustc_mir_transform/src/shim.rs
@@ -435,6 +435,9 @@ fn build_clone_shim<'tcx>(tcx: TyCtxt<'tcx>, def_id: DefId, self_ty: Ty<'tcx>) -
     match self_ty.kind() {
         ty::FnDef(..) | ty::FnPtr(_) => builder.copy_shim(),
         ty::Closure(_, args) => builder.tuple_like_shim(dest, src, args.as_closure().upvar_tys()),
+        ty::CoroutineClosure(_, args) => {
+            builder.tuple_like_shim(dest, src, args.as_coroutine_closure().upvar_tys())
+        }
         ty::Tuple(..) => builder.tuple_like_shim(dest, src, self_ty.tuple_fields()),
         ty::Coroutine(coroutine_def_id, args) => {
             assert_eq!(tcx.coroutine_movability(*coroutine_def_id), hir::Movability::Movable);