@@ -647,31 +647,13 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
647647
648648        match  place_ty. kind ( )  { 
649649            ty:: Array ( _elem_ty,  len_const)  => { 
650-                 let  ty_const = if  let  Some ( ( _,  len_ty) )  = len_const. try_to_valtree ( ) 
651-                     && len_ty != self . tcx . types . usize 
652-                 { 
653-                     // Bad const generics can give us a constant from the type that's 
654-                     // not actually a `usize`, so in that case give an error instead. 
655-                     // FIXME: It'd be nice if the type checker made sure this wasn't 
656-                     // possible, instead. 
657-                     let  err = self . tcx . dcx ( ) . span_delayed_bug ( 
658-                         span, 
659-                         format ! ( 
660-                             "Array length should have already been a type error, as it's {len_ty:?}" 
661-                         ) , 
662-                     ) ; 
663-                     ty:: Const :: new_error ( self . tcx ,  err) 
664-                 }  else  { 
665-                     // We know how long an array is, so just use that as a constant 
666-                     // directly -- no locals needed. We do need one statement so 
667-                     // that borrow- and initialization-checking consider it used, 
668-                     // though. FIXME: Do we really *need* to count this as a use? 
669-                     // Could partial array tracking work off something else instead? 
670-                     self . cfg . push_fake_read ( block,  source_info,  FakeReadCause :: ForIndex ,  place) ; 
671-                     * len_const
672-                 } ; 
673- 
674-                 let  const_ = Const :: from_ty_const ( ty_const,  usize_ty,  self . tcx ) ; 
650+                 // We know how long an array is, so just use that as a constant 
651+                 // directly -- no locals needed. We do need one statement so 
652+                 // that borrow- and initialization-checking consider it used, 
653+                 // though. FIXME: Do we really *need* to count this as a use? 
654+                 // Could partial array tracking work off something else instead? 
655+                 self . cfg . push_fake_read ( block,  source_info,  FakeReadCause :: ForIndex ,  place) ; 
656+                 let  const_ = Const :: from_ty_const ( * len_const,  usize_ty,  self . tcx ) ; 
675657                Operand :: Constant ( Box :: new ( ConstOperand  {  span,  user_ty :  None ,  const_ } ) ) 
676658            } 
677659            ty:: Slice ( _elem_ty)  => { 
0 commit comments