@@ -101,63 +101,13 @@ impl FlagComputation {
101
101
102
102
& ty:: Param ( _) => {
103
103
self . add_flags ( TypeFlags :: HAS_TY_PARAM ) ;
104
- self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
105
104
}
106
105
107
- ty:: Coroutine ( _, args) => {
108
- let args = args. as_coroutine ( ) ;
109
- let should_remove_further_specializable =
110
- !self . flags . contains ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
111
- self . add_args ( args. parent_args ( ) ) ;
112
- if should_remove_further_specializable {
113
- self . flags -= TypeFlags :: STILL_FURTHER_SPECIALIZABLE ;
114
- }
115
-
116
- self . add_ty ( args. resume_ty ( ) ) ;
117
- self . add_ty ( args. return_ty ( ) ) ;
118
- self . add_ty ( args. witness ( ) ) ;
119
- self . add_ty ( args. yield_ty ( ) ) ;
120
- self . add_ty ( args. tupled_upvars_ty ( ) ) ;
121
- }
122
-
123
- ty:: CoroutineWitness ( _, args) => {
124
- let should_remove_further_specializable =
125
- !self . flags . contains ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
106
+ & ty:: Closure ( _, args)
107
+ | & ty:: Coroutine ( _, args)
108
+ | & ty:: CoroutineClosure ( _, args)
109
+ | & ty:: CoroutineWitness ( _, args) => {
126
110
self . add_args ( args) ;
127
- if should_remove_further_specializable {
128
- self . flags -= TypeFlags :: STILL_FURTHER_SPECIALIZABLE ;
129
- }
130
- self . add_flags ( TypeFlags :: HAS_TY_COROUTINE ) ;
131
- }
132
-
133
- & ty:: Closure ( _, args) => {
134
- let args = args. as_closure ( ) ;
135
- let should_remove_further_specializable =
136
- !self . flags . contains ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
137
- self . add_args ( args. parent_args ( ) ) ;
138
- if should_remove_further_specializable {
139
- self . flags -= TypeFlags :: STILL_FURTHER_SPECIALIZABLE ;
140
- }
141
-
142
- self . add_ty ( args. sig_as_fn_ptr_ty ( ) ) ;
143
- self . add_ty ( args. kind_ty ( ) ) ;
144
- self . add_ty ( args. tupled_upvars_ty ( ) ) ;
145
- }
146
-
147
- & ty:: CoroutineClosure ( _, args) => {
148
- let args = args. as_coroutine_closure ( ) ;
149
- let should_remove_further_specializable =
150
- !self . flags . contains ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
151
- self . add_args ( args. parent_args ( ) ) ;
152
- if should_remove_further_specializable {
153
- self . flags -= TypeFlags :: STILL_FURTHER_SPECIALIZABLE ;
154
- }
155
-
156
- self . add_ty ( args. kind_ty ( ) ) ;
157
- self . add_ty ( args. signature_parts_ty ( ) ) ;
158
- self . add_ty ( args. tupled_upvars_ty ( ) ) ;
159
- self . add_ty ( args. coroutine_captures_by_ref_ty ( ) ) ;
160
- self . add_ty ( args. coroutine_witness_ty ( ) ) ;
161
111
}
162
112
163
113
& ty:: Bound ( debruijn, _) => {
@@ -167,21 +117,17 @@ impl FlagComputation {
167
117
168
118
& ty:: Placeholder ( ..) => {
169
119
self . add_flags ( TypeFlags :: HAS_TY_PLACEHOLDER ) ;
170
- self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
171
120
}
172
121
173
- & ty:: Infer ( infer) => {
174
- self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
175
- match infer {
176
- ty:: FreshTy ( _) | ty:: FreshIntTy ( _) | ty:: FreshFloatTy ( _) => {
177
- self . add_flags ( TypeFlags :: HAS_TY_FRESH )
178
- }
122
+ & ty:: Infer ( infer) => match infer {
123
+ ty:: FreshTy ( _) | ty:: FreshIntTy ( _) | ty:: FreshFloatTy ( _) => {
124
+ self . add_flags ( TypeFlags :: HAS_TY_FRESH )
125
+ }
179
126
180
- ty:: TyVar ( _) | ty:: IntVar ( _) | ty:: FloatVar ( _) => {
181
- self . add_flags ( TypeFlags :: HAS_TY_INFER )
182
- }
127
+ ty:: TyVar ( _) | ty:: IntVar ( _) | ty:: FloatVar ( _) => {
128
+ self . add_flags ( TypeFlags :: HAS_TY_INFER )
183
129
}
184
- }
130
+ } ,
185
131
186
132
& ty:: Adt ( _, args) => {
187
133
self . add_args ( args) ;
@@ -358,24 +304,19 @@ impl FlagComputation {
358
304
self . add_args ( uv. args ) ;
359
305
self . add_flags ( TypeFlags :: HAS_CT_PROJECTION ) ;
360
306
}
361
- ty:: ConstKind :: Infer ( infer) => {
362
- self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
363
- match infer {
364
- InferConst :: Fresh ( _) => self . add_flags ( TypeFlags :: HAS_CT_FRESH ) ,
365
- InferConst :: Var ( _) => self . add_flags ( TypeFlags :: HAS_CT_INFER ) ,
366
- }
367
- }
307
+ ty:: ConstKind :: Infer ( infer) => match infer {
308
+ InferConst :: Fresh ( _) => self . add_flags ( TypeFlags :: HAS_CT_FRESH ) ,
309
+ InferConst :: Var ( _) => self . add_flags ( TypeFlags :: HAS_CT_INFER ) ,
310
+ } ,
368
311
ty:: ConstKind :: Bound ( debruijn, _) => {
369
312
self . add_bound_var ( debruijn) ;
370
313
self . add_flags ( TypeFlags :: HAS_CT_BOUND ) ;
371
314
}
372
315
ty:: ConstKind :: Param ( _) => {
373
316
self . add_flags ( TypeFlags :: HAS_CT_PARAM ) ;
374
- self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
375
317
}
376
318
ty:: ConstKind :: Placeholder ( _) => {
377
319
self . add_flags ( TypeFlags :: HAS_CT_PLACEHOLDER ) ;
378
- self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ;
379
320
}
380
321
ty:: ConstKind :: Value ( cv) => self . add_ty ( cv. ty ) ,
381
322
ty:: ConstKind :: Expr ( e) => self . add_args ( e. args ( ) ) ,
0 commit comments