@@ -1041,6 +1041,8 @@ const NUM_PREINTERNED_TY_VARS: u32 = 100;
10411041const NUM_PREINTERNED_FRESH_TYS : u32 = 20 ;
10421042const NUM_PREINTERNED_FRESH_INT_TYS : u32 = 3 ;
10431043const NUM_PREINTERNED_FRESH_FLOAT_TYS : u32 = 3 ;
1044+ const NUM_PREINTERNED_ANON_BOUND_TYS_I : u32 = 3 ;
1045+ const NUM_PREINTERNED_ANON_BOUND_TYS_V : u32 = 20 ;
10441046
10451047// This number may seem high, but it is reached in all but the smallest crates.
10461048const NUM_PREINTERNED_RE_VARS : u32 = 500 ;
@@ -1088,6 +1090,11 @@ pub struct CommonTypes<'tcx> {
10881090
10891091 /// Pre-interned `Infer(ty::FreshFloatTy(n))` for small values of `n`.
10901092 pub fresh_float_tys : Vec < Ty < ' tcx > > ,
1093+
1094+ /// Pre-interned values of the form:
1095+ /// `Bound(DebruijnIndex(i), BoundTy { var: v, kind: BoundTyKind::Anon})`
1096+ /// for small values of `i` and `v`.
1097+ pub anon_bound_tys : Vec < Vec < Ty < ' tcx > > > ,
10911098}
10921099
10931100pub struct CommonLifetimes < ' tcx > {
@@ -1131,6 +1138,19 @@ impl<'tcx> CommonTypes<'tcx> {
11311138 let fresh_float_tys: Vec < _ > =
11321139 ( 0 ..NUM_PREINTERNED_FRESH_FLOAT_TYS ) . map ( |n| mk ( Infer ( ty:: FreshFloatTy ( n) ) ) ) . collect ( ) ;
11331140
1141+ let anon_bound_tys = ( 0 ..NUM_PREINTERNED_ANON_BOUND_TYS_I )
1142+ . map ( |i| {
1143+ ( 0 ..NUM_PREINTERNED_ANON_BOUND_TYS_V )
1144+ . map ( |v| {
1145+ mk ( ty:: Bound (
1146+ ty:: DebruijnIndex :: from ( i) ,
1147+ ty:: BoundTy { var : ty:: BoundVar :: from ( v) , kind : ty:: BoundTyKind :: Anon } ,
1148+ ) )
1149+ } )
1150+ . collect ( )
1151+ } )
1152+ . collect ( ) ;
1153+
11341154 CommonTypes {
11351155 unit : mk ( Tuple ( List :: empty ( ) ) ) ,
11361156 bool : mk ( Bool ) ,
@@ -1161,6 +1181,7 @@ impl<'tcx> CommonTypes<'tcx> {
11611181 fresh_tys,
11621182 fresh_int_tys,
11631183 fresh_float_tys,
1184+ anon_bound_tys,
11641185 }
11651186 }
11661187}
0 commit comments