@@ -1417,9 +1417,6 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14171417 record ! ( self . tables. super_predicates_of[ def_id] <- self . tcx. super_predicates_of( def_id) ) ;
14181418 record ! ( self . tables. implied_predicates_of[ def_id] <- self . tcx. implied_predicates_of( def_id) ) ;
14191419 }
1420- if let DefKind :: Generator = def_kind {
1421- self . encode_info_for_generator ( local_id) ;
1422- }
14231420 if let DefKind :: Trait | DefKind :: Impl { .. } = def_kind {
14241421 let associated_item_def_ids = self . tcx . associated_item_def_ids ( def_id) ;
14251422 record_array ! ( self . tables. associated_item_or_field_def_ids[ def_id] <-
@@ -1432,8 +1429,8 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
14321429 self . encode_info_for_assoc_item ( def_id) ;
14331430 }
14341431 }
1435- if let DefKind :: Impl { of_trait } = def_kind {
1436- self . encode_info_for_impl ( def_id , of_trait )
1432+ if let DefKind :: Generator = def_kind {
1433+ self . encode_info_for_generator ( local_id ) ;
14371434 }
14381435 if let DefKind :: Enum | DefKind :: Struct | DefKind :: Union = def_kind {
14391436 self . encode_info_for_adt ( local_id) ;
@@ -1705,33 +1702,6 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
17051702 record ! ( self . tables. macro_definition[ def_id. to_def_id( ) ] <- & * macro_def. body) ;
17061703 }
17071704
1708- #[ instrument( level = "debug" , skip( self ) ) ]
1709- fn encode_info_for_impl ( & mut self , def_id : DefId , of_trait : bool ) {
1710- let tcx = self . tcx ;
1711-
1712- self . tables . defaultness . set_some ( def_id. index , tcx. defaultness ( def_id) ) ;
1713- self . tables . impl_polarity . set_some ( def_id. index , tcx. impl_polarity ( def_id) ) ;
1714-
1715- if of_trait && let Some ( trait_ref) = tcx. impl_trait_ref ( def_id) {
1716- record ! ( self . tables. impl_trait_ref[ def_id] <- trait_ref) ;
1717-
1718- let trait_def_id = trait_ref. skip_binder ( ) . def_id ;
1719- let trait_def = tcx. trait_def ( trait_def_id) ;
1720- if let Some ( mut an) = trait_def. ancestors ( tcx, def_id) . ok ( ) {
1721- if let Some ( specialization_graph:: Node :: Impl ( parent) ) = an. nth ( 1 ) {
1722- self . tables . impl_parent . set_some ( def_id. index , parent. into ( ) ) ;
1723- }
1724- }
1725-
1726- // if this is an impl of `CoerceUnsized`, create its
1727- // "unsized info", else just store None
1728- if Some ( trait_def_id) == tcx. lang_items ( ) . coerce_unsized_trait ( ) {
1729- let coerce_unsized_info = tcx. coerce_unsized_info ( def_id) ;
1730- record ! ( self . tables. coerce_unsized_info[ def_id] <- coerce_unsized_info) ;
1731- }
1732- }
1733- }
1734-
17351705 #[ instrument( level = "debug" , skip( self ) ) ]
17361706 fn encode_info_for_generator ( & mut self , def_id : LocalDefId ) {
17371707 let typeck_result: & ' tcx ty:: TypeckResults < ' tcx > = self . tcx . typeck ( def_id) ;
@@ -1967,20 +1937,35 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
19671937 FxHashMap :: default ( ) ;
19681938
19691939 for id in tcx. hir ( ) . items ( ) {
1970- if matches ! ( tcx. def_kind( id. owner_id) , DefKind :: Impl { .. } ) {
1971- if let Some ( trait_ref) = tcx. impl_trait_ref ( id. owner_id ) {
1972- let trait_ref = trait_ref. subst_identity ( ) ;
1973-
1974- let simplified_self_ty = fast_reject:: simplify_type (
1975- self . tcx ,
1976- trait_ref. self_ty ( ) ,
1977- TreatParams :: AsCandidateKey ,
1978- ) ;
1979-
1980- fx_hash_map
1981- . entry ( trait_ref. def_id )
1982- . or_default ( )
1983- . push ( ( id. owner_id . def_id . local_def_index , simplified_self_ty) ) ;
1940+ let DefKind :: Impl { of_trait } = tcx. def_kind ( id. owner_id ) else { continue ; } ;
1941+ let def_id = id. owner_id . to_def_id ( ) ;
1942+
1943+ self . tables . defaultness . set_some ( def_id. index , tcx. defaultness ( def_id) ) ;
1944+ self . tables . impl_polarity . set_some ( def_id. index , tcx. impl_polarity ( def_id) ) ;
1945+
1946+ if of_trait && let Some ( trait_ref) = tcx. impl_trait_ref ( def_id) {
1947+ record ! ( self . tables. impl_trait_ref[ def_id] <- trait_ref) ;
1948+
1949+ let trait_ref = trait_ref. subst_identity ( ) ;
1950+ let simplified_self_ty =
1951+ fast_reject:: simplify_type ( self . tcx , trait_ref. self_ty ( ) , TreatParams :: AsCandidateKey ) ;
1952+ fx_hash_map
1953+ . entry ( trait_ref. def_id )
1954+ . or_default ( )
1955+ . push ( ( id. owner_id . def_id . local_def_index , simplified_self_ty) ) ;
1956+
1957+ let trait_def = tcx. trait_def ( trait_ref. def_id ) ;
1958+ if let Some ( mut an) = trait_def. ancestors ( tcx, def_id) . ok ( ) {
1959+ if let Some ( specialization_graph:: Node :: Impl ( parent) ) = an. nth ( 1 ) {
1960+ self . tables . impl_parent . set_some ( def_id. index , parent. into ( ) ) ;
1961+ }
1962+ }
1963+
1964+ // if this is an impl of `CoerceUnsized`, create its
1965+ // "unsized info", else just store None
1966+ if Some ( trait_ref. def_id ) == tcx. lang_items ( ) . coerce_unsized_trait ( ) {
1967+ let coerce_unsized_info = tcx. coerce_unsized_info ( def_id) ;
1968+ record ! ( self . tables. coerce_unsized_info[ def_id] <- coerce_unsized_info) ;
19841969 }
19851970 }
19861971 }
0 commit comments