@@ -50,7 +50,6 @@ use either::Either;
50
50
use hir_expand:: { attrs:: RawAttrs , name:: Name , ExpandTo , HirFileId , InFile } ;
51
51
use intern:: Interned ;
52
52
use la_arena:: { Arena , Idx , IdxRange , RawIdx } ;
53
- use profile:: Count ;
54
53
use rustc_hash:: FxHashMap ;
55
54
use smallvec:: SmallVec ;
56
55
use span:: { AstIdNode , FileAstId , Span } ;
@@ -94,8 +93,6 @@ impl fmt::Debug for RawVisibilityId {
94
93
/// The item tree of a source file.
95
94
#[ derive( Debug , Default , Eq , PartialEq ) ]
96
95
pub struct ItemTree {
97
- _c : Count < Self > ,
98
-
99
96
top_level : SmallVec < [ ModItem ; 1 ] > ,
100
97
attrs : FxHashMap < AttrOwner , RawAttrs > ,
101
98
@@ -263,14 +260,6 @@ impl ItemVisibilities {
263
260
}
264
261
}
265
262
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
-
274
263
#[ derive( Default , Debug , Eq , PartialEq ) ]
275
264
struct ItemTreeData {
276
265
uses : Arena < Use > ,
@@ -562,6 +551,20 @@ impl_index!(fields: Field, variants: Variant, params: Param);
562
551
impl Index < RawVisibilityId > for ItemTree {
563
552
type Output = RawVisibility ;
564
553
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
+
565
568
match index {
566
569
RawVisibilityId :: PRIV_IMPLICIT => & VIS_PRIV_IMPLICIT ,
567
570
RawVisibilityId :: PRIV_EXPLICIT => & VIS_PRIV_EXPLICIT ,
@@ -871,25 +874,19 @@ impl UseTree {
871
874
prefix : Option < ModPath > ,
872
875
path : & ModPath ,
873
876
) -> Option < ( ModPath , ImportKind ) > {
874
- match ( prefix, & path. kind ) {
877
+ match ( prefix, path. kind ) {
875
878
( None , _) => Some ( ( path. clone ( ) , ImportKind :: Plain ) ) ,
876
879
( 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 ( ) ) ;
880
881
Some ( ( prefix, ImportKind :: Plain ) )
881
882
}
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 ( ) => {
885
884
// `super::super` + `super::rest`
886
885
match & mut prefix. kind {
887
886
PathKind :: Super ( m) => {
888
887
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 ( ) ) ;
893
890
Some ( ( prefix, ImportKind :: Plain ) )
894
891
}
895
892
_ => None ,
@@ -963,10 +960,10 @@ impl ModItem {
963
960
| ModItem :: Mod ( _)
964
961
| ModItem :: MacroRules ( _)
965
962
| 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) ) ,
970
967
}
971
968
}
972
969
0 commit comments