@@ -1812,32 +1812,25 @@ fn is_field_vis_inherited(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
1812
1812
}
1813
1813
}
1814
1814
1815
- impl < ' tcx > Clean < ' tcx , Visibility > for ty:: Visibility {
1816
- fn clean ( & self , _cx : & mut DocContext < ' _ > ) -> Visibility {
1817
- match * self {
1818
- ty:: Visibility :: Public => Visibility :: Public ,
1819
- // NOTE: this is not quite right: `ty` uses `Invisible` to mean 'private',
1820
- // while rustdoc really does mean inherited. That means that for enum variants, such as
1821
- // `pub enum E { V }`, `V` will be marked as `Public` by `ty`, but as `Inherited` by rustdoc.
1822
- // Various parts of clean override `tcx.visibility` explicitly to make sure this distinction is captured.
1823
- ty:: Visibility :: Invisible => Visibility :: Inherited ,
1824
- ty:: Visibility :: Restricted ( module) => Visibility :: Restricted ( module) ,
1825
- }
1826
- }
1827
- }
1828
-
1829
- impl < ' tcx > Clean < ' tcx , VariantStruct > for rustc_hir:: VariantData < ' tcx > {
1830
- fn clean ( & self , cx : & mut DocContext < ' tcx > ) -> VariantStruct {
1831
- VariantStruct {
1832
- struct_type : CtorKind :: from_hir ( self ) ,
1833
- fields : self . fields ( ) . iter ( ) . map ( |x| clean_field ( x, cx) ) . collect ( ) ,
1834
- }
1815
+ pub ( crate ) fn clean_visibility ( vis : ty:: Visibility ) -> Visibility {
1816
+ match vis {
1817
+ ty:: Visibility :: Public => Visibility :: Public ,
1818
+ // NOTE: this is not quite right: `ty` uses `Invisible` to mean 'private',
1819
+ // while rustdoc really does mean inherited. That means that for enum variants, such as
1820
+ // `pub enum E { V }`, `V` will be marked as `Public` by `ty`, but as `Inherited` by rustdoc.
1821
+ // Various parts of clean override `tcx.visibility` explicitly to make sure this distinction is captured.
1822
+ ty:: Visibility :: Invisible => Visibility :: Inherited ,
1823
+ ty:: Visibility :: Restricted ( module) => Visibility :: Restricted ( module) ,
1835
1824
}
1836
1825
}
1837
1826
1838
- impl < ' tcx > Clean < ' tcx , Vec < Item > > for hir:: VariantData < ' tcx > {
1839
- fn clean ( & self , cx : & mut DocContext < ' tcx > ) -> Vec < Item > {
1840
- self . fields ( ) . iter ( ) . map ( |x| clean_field ( x, cx) ) . collect ( )
1827
+ fn clean_variant_data < ' tcx > (
1828
+ variant : & hir:: VariantData < ' tcx > ,
1829
+ cx : & mut DocContext < ' tcx > ,
1830
+ ) -> VariantStruct {
1831
+ VariantStruct {
1832
+ struct_type : CtorKind :: from_hir ( variant) ,
1833
+ fields : variant. fields ( ) . iter ( ) . map ( |x| clean_field ( x, cx) ) . collect ( ) ,
1841
1834
}
1842
1835
}
1843
1836
@@ -1863,8 +1856,10 @@ impl<'tcx> Clean<'tcx, Item> for ty::VariantDef {
1863
1856
impl < ' tcx > Clean < ' tcx , Variant > for hir:: VariantData < ' tcx > {
1864
1857
fn clean ( & self , cx : & mut DocContext < ' tcx > ) -> Variant {
1865
1858
match self {
1866
- hir:: VariantData :: Struct ( ..) => Variant :: Struct ( self . clean ( cx) ) ,
1867
- hir:: VariantData :: Tuple ( ..) => Variant :: Tuple ( self . clean ( cx) ) ,
1859
+ hir:: VariantData :: Struct ( ..) => Variant :: Struct ( clean_variant_data ( self , cx) ) ,
1860
+ hir:: VariantData :: Tuple ( ..) => {
1861
+ Variant :: Tuple ( self . fields ( ) . iter ( ) . map ( |x| clean_field ( x, cx) ) . collect ( ) )
1862
+ }
1868
1863
hir:: VariantData :: Unit ( ..) => Variant :: CLike ,
1869
1864
}
1870
1865
}
@@ -1983,7 +1978,7 @@ fn clean_maybe_renamed_item<'tcx>(
1983
1978
clean_fn_or_proc_macro ( item, sig, generics, body_id, & mut name, cx)
1984
1979
}
1985
1980
ItemKind :: Macro ( ref macro_def, _) => {
1986
- let ty_vis = cx. tcx . visibility ( def_id) . clean ( cx ) ;
1981
+ let ty_vis = clean_visibility ( cx. tcx . visibility ( def_id) ) ;
1987
1982
MacroItem ( Macro {
1988
1983
source : display_macro_source ( cx, name, macro_def, def_id, ty_vis) ,
1989
1984
} )
@@ -2112,7 +2107,7 @@ fn clean_extern_crate<'tcx>(
2112
2107
name: Some ( name) ,
2113
2108
attrs: Box :: new( attrs. clean( cx) ) ,
2114
2109
item_id: crate_def_id. into( ) ,
2115
- visibility: ty_vis . clean ( cx ) ,
2110
+ visibility: clean_visibility ( ty_vis ) ,
2116
2111
kind: box ExternCrateItem { src: orig_name } ,
2117
2112
cfg: attrs. cfg( cx. tcx, & cx. cache. hidden_cfg) ,
2118
2113
} ]
0 commit comments