@@ -50,7 +50,6 @@ use either::Either;
5050use hir_expand:: { attrs:: RawAttrs , name:: Name , ExpandTo , HirFileId , InFile } ;
5151use intern:: Interned ;
5252use la_arena:: { Arena , Idx , IdxRange , RawIdx } ;
53- use profile:: Count ;
5453use rustc_hash:: FxHashMap ;
5554use smallvec:: SmallVec ;
5655use span:: { AstIdNode , FileAstId , Span } ;
@@ -94,8 +93,6 @@ impl fmt::Debug for RawVisibilityId {
9493/// The item tree of a source file.
9594#[ derive( Debug , Default , Eq , PartialEq ) ]
9695pub struct ItemTree {
97- _c : Count < Self > ,
98-
9996 top_level : SmallVec < [ ModItem ; 1 ] > ,
10097 attrs : FxHashMap < AttrOwner , RawAttrs > ,
10198
@@ -263,14 +260,6 @@ impl ItemVisibilities {
263260 }
264261}
265262
266- static VIS_PUB : RawVisibility = RawVisibility :: Public ;
267- static VIS_PRIV_IMPLICIT : RawVisibility =
268- RawVisibility :: Module ( ModPath :: from_kind ( PathKind :: Super ( 0 ) ) , VisibilityExplicitness :: Implicit ) ;
269- static VIS_PRIV_EXPLICIT : RawVisibility =
270- RawVisibility :: Module ( ModPath :: from_kind ( PathKind :: Super ( 0 ) ) , VisibilityExplicitness :: Explicit ) ;
271- static VIS_PUB_CRATE : RawVisibility =
272- RawVisibility :: Module ( ModPath :: from_kind ( PathKind :: Crate ) , VisibilityExplicitness :: Explicit ) ;
273-
274263#[ derive( Default , Debug , Eq , PartialEq ) ]
275264struct ItemTreeData {
276265 uses : Arena < Use > ,
@@ -562,6 +551,20 @@ impl_index!(fields: Field, variants: Variant, params: Param);
562551impl Index < RawVisibilityId > for ItemTree {
563552 type Output = RawVisibility ;
564553 fn index ( & self , index : RawVisibilityId ) -> & Self :: Output {
554+ static VIS_PUB : RawVisibility = RawVisibility :: Public ;
555+ static VIS_PRIV_IMPLICIT : RawVisibility = RawVisibility :: Module (
556+ ModPath :: from_kind ( PathKind :: Super ( 0 ) ) ,
557+ VisibilityExplicitness :: Implicit ,
558+ ) ;
559+ static VIS_PRIV_EXPLICIT : RawVisibility = RawVisibility :: Module (
560+ ModPath :: from_kind ( PathKind :: Super ( 0 ) ) ,
561+ VisibilityExplicitness :: Explicit ,
562+ ) ;
563+ static VIS_PUB_CRATE : RawVisibility = RawVisibility :: Module (
564+ ModPath :: from_kind ( PathKind :: Crate ) ,
565+ VisibilityExplicitness :: Explicit ,
566+ ) ;
567+
565568 match index {
566569 RawVisibilityId :: PRIV_IMPLICIT => & VIS_PRIV_IMPLICIT ,
567570 RawVisibilityId :: PRIV_EXPLICIT => & VIS_PRIV_EXPLICIT ,
@@ -871,25 +874,19 @@ impl UseTree {
871874 prefix : Option < ModPath > ,
872875 path : & ModPath ,
873876 ) -> Option < ( ModPath , ImportKind ) > {
874- match ( prefix, & path. kind ) {
877+ match ( prefix, path. kind ) {
875878 ( None , _) => Some ( ( path. clone ( ) , ImportKind :: Plain ) ) ,
876879 ( Some ( mut prefix) , PathKind :: Plain ) => {
877- for segment in path. segments ( ) {
878- prefix. push_segment ( segment. clone ( ) ) ;
879- }
880+ prefix. extend ( path. segments ( ) . iter ( ) . cloned ( ) ) ;
880881 Some ( ( prefix, ImportKind :: Plain ) )
881882 }
882- ( Some ( mut prefix) , PathKind :: Super ( n) )
883- if * n > 0 && prefix. segments ( ) . is_empty ( ) =>
884- {
883+ ( Some ( mut prefix) , PathKind :: Super ( n) ) if n > 0 && prefix. segments ( ) . is_empty ( ) => {
885884 // `super::super` + `super::rest`
886885 match & mut prefix. kind {
887886 PathKind :: Super ( m) => {
888887 cov_mark:: hit!( concat_super_mod_paths) ;
889- * m += * n;
890- for segment in path. segments ( ) {
891- prefix. push_segment ( segment. clone ( ) ) ;
892- }
888+ * m += n;
889+ prefix. extend ( path. segments ( ) . iter ( ) . cloned ( ) ) ;
893890 Some ( ( prefix, ImportKind :: Plain ) )
894891 }
895892 _ => None ,
@@ -963,10 +960,10 @@ impl ModItem {
963960 | ModItem :: Mod ( _)
964961 | ModItem :: MacroRules ( _)
965962 | ModItem :: Macro2 ( _) => None ,
966- ModItem :: MacroCall ( call) => Some ( AssocItem :: MacroCall ( * call) ) ,
967- ModItem :: Const ( konst) => Some ( AssocItem :: Const ( * konst) ) ,
968- ModItem :: TypeAlias ( alias) => Some ( AssocItem :: TypeAlias ( * alias) ) ,
969- ModItem :: Function ( func) => Some ( AssocItem :: Function ( * func) ) ,
963+ & ModItem :: MacroCall ( call) => Some ( AssocItem :: MacroCall ( call) ) ,
964+ & ModItem :: Const ( konst) => Some ( AssocItem :: Const ( konst) ) ,
965+ & ModItem :: TypeAlias ( alias) => Some ( AssocItem :: TypeAlias ( alias) ) ,
966+ & ModItem :: Function ( func) => Some ( AssocItem :: Function ( func) ) ,
970967 }
971968 }
972969
0 commit comments