@@ -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