File tree Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Expand file tree Collapse file tree 2 files changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -720,15 +720,18 @@ fn compute_layout<'tcx>(
720720        _ => bug ! ( ) , 
721721    } ; 
722722
723+     let  param_env = tcx. param_env ( source. def_id ( ) ) ; 
724+ 
723725    for  ( local,  decl)  in  body. local_decls . iter_enumerated ( )  { 
724726        // Ignore locals which are internal or not live 
725727        if  !live_locals. contains ( local)  || decl. internal  { 
726728            continue ; 
727729        } 
730+         let  decl_ty = tcx. normalize_erasing_regions ( param_env,  decl. ty ) ; 
728731
729732        // Sanity check that typeck knows about the type of locals which are 
730733        // live across a suspension point 
731-         if  !allowed. contains ( & decl . ty )  && !allowed_upvars. contains ( & decl . ty )  { 
734+         if  !allowed. contains ( & decl_ty )  && !allowed_upvars. contains ( & decl_ty )  { 
732735            span_bug ! ( 
733736                body. span, 
734737                "Broken MIR: generator contains type {} in MIR, \  
Original file line number Diff line number Diff line change 1+ // check-pass 
2+ // edition:2018 
3+ // compile-flags: --crate-type=lib 
4+ 
5+ pub  async  fn  test ( )  { 
6+     const  C :  usize  = 4 ; 
7+     foo ( & mut  [ 0u8 ;  C ] ) . await ; 
8+ } 
9+ 
10+ async  fn  foo ( _:  & mut  [ u8 ] )  { } 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments