diff options
| author | Michael Goulet <michael@errs.io> | 2024-07-25 14:02:33 -0400 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2024-07-26 12:53:53 -0400 |
| commit | d5656059a1e517d9c7b228d21a4134e097e20e00 (patch) | |
| tree | 18bfa630322f5574f91e9da72b76b3902964eabb /compiler/rustc_mir_transform/src/shim.rs | |
| parent | 2d5a628a1de1d38318909a710ef37da6251e362e (diff) | |
| download | rust-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.rs | 3 |
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); |
