@@ -791,25 +791,20 @@ impl<'a, 'b, 'tcx> TypeVerifier<'a, 'b, 'tcx> {
791
791
( adt_def. variant ( FIRST_VARIANT ) , args)
792
792
}
793
793
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 ( ) ) {
800
795
Some ( & ty) => Ok ( ty) ,
801
796
None => Err ( FieldAccessError :: OutOfRange {
802
- field_count : args. as_closure ( ) . upvar_tys ( ) . count ( ) ,
797
+ field_count : args. as_closure ( ) . upvar_tys ( ) . len ( ) ,
803
798
} ) ,
804
799
} ;
805
800
}
806
801
ty:: Generator ( _, args, _) => {
807
802
// Only prefix fields (upvars and current state) are
808
803
// 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) ,
811
806
None => Err ( FieldAccessError :: OutOfRange {
812
- field_count : args. as_generator ( ) . prefix_tys ( ) . count ( ) ,
807
+ field_count : args. as_generator ( ) . prefix_tys ( ) . len ( ) ,
813
808
} ) ,
814
809
} ;
815
810
}
@@ -1772,21 +1767,21 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
1772
1767
}
1773
1768
}
1774
1769
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) ,
1777
1772
None => Err ( FieldAccessError :: OutOfRange {
1778
- field_count : args. as_closure ( ) . upvar_tys ( ) . count ( ) ,
1773
+ field_count : args. as_closure ( ) . upvar_tys ( ) . len ( ) ,
1779
1774
} ) ,
1780
1775
}
1781
1776
}
1782
1777
AggregateKind :: Generator ( _, args, _) => {
1783
1778
// It doesn't make sense to look at a field beyond the prefix;
1784
1779
// these require a variant index, and are not initialized in
1785
1780
// 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) ,
1788
1783
None => Err ( FieldAccessError :: OutOfRange {
1789
- field_count : args. as_generator ( ) . prefix_tys ( ) . count ( ) ,
1784
+ field_count : args. as_generator ( ) . prefix_tys ( ) . len ( ) ,
1790
1785
} ) ,
1791
1786
}
1792
1787
}
0 commit comments