1
Fork 0

Compute layout with spans for better cycle errors in coroutines

This commit is contained in:
Michael Goulet 2023-11-08 04:20:57 +00:00
parent 2b603f95a4
commit 7994b5849c
5 changed files with 30 additions and 19 deletions

View file

@ -740,11 +740,11 @@ fn coroutine_layout<'tcx>(
};
let tag_layout = cx.tcx.mk_layout(LayoutS::scalar(cx, tag));
let promoted_layouts = ineligible_locals
.iter()
.map(|local| subst_field(info.field_tys[local].ty))
.map(|ty| Ty::new_maybe_uninit(tcx, ty))
.map(|ty| Ok(cx.layout_of(ty)?.layout));
let promoted_layouts = ineligible_locals.iter().map(|local| {
let field_ty = subst_field(info.field_tys[local].ty);
let uninit_ty = Ty::new_maybe_uninit(tcx, field_ty);
Ok(cx.spanned_layout_of(uninit_ty, info.field_tys[local].source_info.span)?.layout)
});
let prefix_layouts = args
.as_coroutine()
.prefix_tys()