rustc: correctly transform memory_index mappings for generators.

This commit is contained in:
Eduard-Mihai Burtescu 2019-06-23 04:37:23 +03:00
parent dbec74ffa7
commit fad27df3e7
3 changed files with 107 additions and 38 deletions

View file

@ -0,0 +1,19 @@
// This testcase used to ICE in codegen due to inconsistent field reordering
// in the generator state, claiming a ZST field was after a non-ZST field,
// while those two fields were at the same offset (which is impossible).
// That is, memory ordering of `(X, ())`, but offsets of `((), X)`.
// compile-pass
// edition:2018
#![feature(async_await)]
#![allow(unused)]
async fn foo<F>(_: &(), _: F) {}
fn main() {
foo(&(), || {});
async {
foo(&(), || {}).await;
};
}