@@ -791,25 +791,20 @@ impl<'a, 'b, 'tcx> TypeVerifier<'a, 'b, 'tcx> {
791791 ( adt_def. variant ( FIRST_VARIANT ) ,  args) 
792792 } 
793793 ty:: Closure ( _,  args)  => { 
794-  return  match  args
795-  . as_closure ( ) 
796-  . tupled_upvars_ty ( ) 
797-  . tuple_fields ( ) 
798-  . get ( field. index ( ) ) 
799-  { 
794+  return  match  args. as_closure ( ) . upvar_tys ( ) . get ( field. index ( ) )  { 
800795 Some ( & ty)  => Ok ( ty) , 
801796 None  => Err ( FieldAccessError :: OutOfRange  { 
802-  field_count :  args. as_closure ( ) . upvar_tys ( ) . count ( ) , 
797+  field_count :  args. as_closure ( ) . upvar_tys ( ) . len ( ) , 
803798 } ) , 
804799 } ; 
805800 } 
806801 ty:: Generator ( _,  args,  _)  => { 
807802 // Only prefix fields (upvars and current state) are 
808803 // accessible without a variant index. 
809-  return  match  args. as_generator ( ) . prefix_tys ( ) . nth ( field. index ( ) )  { 
810-  Some ( ty)  => Ok ( ty) , 
804+  return  match  args. as_generator ( ) . prefix_tys ( ) . get ( field. index ( ) )  { 
805+  Some ( ty)  => Ok ( * ty) , 
811806 None  => Err ( FieldAccessError :: OutOfRange  { 
812-  field_count :  args. as_generator ( ) . prefix_tys ( ) . count ( ) , 
807+  field_count :  args. as_generator ( ) . prefix_tys ( ) . len ( ) , 
813808 } ) , 
814809 } ; 
815810 } 
@@ -1772,21 +1767,21 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
17721767 } 
17731768 } 
17741769 AggregateKind :: Closure ( _,  args)  => { 
1775-  match  args. as_closure ( ) . upvar_tys ( ) . nth ( field_index. as_usize ( ) )  { 
1776-  Some ( ty)  => Ok ( ty) , 
1770+  match  args. as_closure ( ) . upvar_tys ( ) . get ( field_index. as_usize ( ) )  { 
1771+  Some ( ty)  => Ok ( * ty) , 
17771772 None  => Err ( FieldAccessError :: OutOfRange  { 
1778-  field_count :  args. as_closure ( ) . upvar_tys ( ) . count ( ) , 
1773+  field_count :  args. as_closure ( ) . upvar_tys ( ) . len ( ) , 
17791774 } ) , 
17801775 } 
17811776 } 
17821777 AggregateKind :: Generator ( _,  args,  _)  => { 
17831778 // It doesn't make sense to look at a field beyond the prefix; 
17841779 // these require a variant index, and are not initialized in 
17851780 // aggregate rvalues. 
1786-  match  args. as_generator ( ) . prefix_tys ( ) . nth ( field_index. as_usize ( ) )  { 
1787-  Some ( ty)  => Ok ( ty) , 
1781+  match  args. as_generator ( ) . prefix_tys ( ) . get ( field_index. as_usize ( ) )  { 
1782+  Some ( ty)  => Ok ( * ty) , 
17881783 None  => Err ( FieldAccessError :: OutOfRange  { 
1789-  field_count :  args. as_generator ( ) . prefix_tys ( ) . count ( ) , 
1784+  field_count :  args. as_generator ( ) . prefix_tys ( ) . len ( ) , 
17901785 } ) , 
17911786 } 
17921787 } 
0 commit comments