@@ -101,63 +101,13 @@ impl FlagComputation {
101101
102102            & ty:: Param ( _)  => { 
103103                self . add_flags ( TypeFlags :: HAS_TY_PARAM ) ; 
104-                 self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ; 
105104            } 
106105
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)  => { 
126110                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 ( ) ) ; 
161111            } 
162112
163113            & ty:: Bound ( debruijn,  _)  => { 
@@ -167,21 +117,17 @@ impl FlagComputation {
167117
168118            & ty:: Placeholder ( ..)  => { 
169119                self . add_flags ( TypeFlags :: HAS_TY_PLACEHOLDER ) ; 
170-                 self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ; 
171120            } 
172121
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+                 } 
179126
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 ) 
183129                } 
184-             } 
130+             } , 
185131
186132            & ty:: Adt ( _,  args)  => { 
187133                self . add_args ( args) ; 
@@ -358,24 +304,19 @@ impl FlagComputation {
358304                self . add_args ( uv. args ) ; 
359305                self . add_flags ( TypeFlags :: HAS_CT_PROJECTION ) ; 
360306            } 
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+             } , 
368311            ty:: ConstKind :: Bound ( debruijn,  _)  => { 
369312                self . add_bound_var ( debruijn) ; 
370313                self . add_flags ( TypeFlags :: HAS_CT_BOUND ) ; 
371314            } 
372315            ty:: ConstKind :: Param ( _)  => { 
373316                self . add_flags ( TypeFlags :: HAS_CT_PARAM ) ; 
374-                 self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ; 
375317            } 
376318            ty:: ConstKind :: Placeholder ( _)  => { 
377319                self . add_flags ( TypeFlags :: HAS_CT_PLACEHOLDER ) ; 
378-                 self . add_flags ( TypeFlags :: STILL_FURTHER_SPECIALIZABLE ) ; 
379320            } 
380321            ty:: ConstKind :: Value ( cv)  => self . add_ty ( cv. ty ) , 
381322            ty:: ConstKind :: Expr ( e)  => self . add_args ( e. args ( ) ) , 
0 commit comments