Skip to content

Commit

Permalink
Rollup merge of #70957 - oli-obk:lazy_repeat_length_eval_ice, r=matth…
Browse files Browse the repository at this point in the history
…ewjasper

Normalize MIR locals' types for generator layout computation.

fixes #70905
  • Loading branch information
Centril committed Apr 10, 2020
2 parents 4dfa73a + 8a03147 commit eec86ba
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
5 changes: 4 additions & 1 deletion src/librustc_mir/transform/generator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -721,15 +721,18 @@ fn compute_layout<'tcx>(
_ => bug!(),
};

let param_env = tcx.param_env(source.def_id());

for (local, decl) in body.local_decls.iter_enumerated() {
// Ignore locals which are internal or not live
if !live_locals.contains(local) || decl.internal {
continue;
}
let decl_ty = tcx.normalize_erasing_regions(param_env, decl.ty);

// Sanity check that typeck knows about the type of locals which are
// live across a suspension point
if !allowed.contains(&decl.ty) && !allowed_upvars.contains(&decl.ty) {
if !allowed.contains(&decl_ty) && !allowed_upvars.contains(&decl_ty) {
span_bug!(
body.span,
"Broken MIR: generator contains type {} in MIR, \
Expand Down
10 changes: 10 additions & 0 deletions src/test/ui/repeat_count_const_in_async_fn.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// check-pass
// edition:2018
// compile-flags: --crate-type=lib

pub async fn test() {
const C: usize = 4;
foo(&mut [0u8; C]).await;
}

async fn foo(_: &mut [u8]) {}

0 comments on commit eec86ba

Please sign in to comment.