@@ -1322,14 +1322,17 @@ fn clean_qpath<'tcx>(hir_ty: &hir::Ty<'tcx>, cx: &mut DocContext<'tcx>) -> Type
13221322 let trait_def = cx. tcx . associated_item ( p. res . def_id ( ) ) . container_id ( cx. tcx ) ;
13231323 let trait_ = self :: Path {
13241324 res : Res :: Def ( DefKind :: Trait , trait_def) ,
1325- segments : trait_segments. iter ( ) . map ( |x| x . clean ( cx) ) . collect ( ) ,
1325+ segments : trait_segments. iter ( ) . map ( |x| clean_path_segment ( x , cx) ) . collect ( ) ,
13261326 } ;
13271327 register_res ( cx, trait_. res ) ;
13281328 let self_def_id = DefId :: local ( qself. hir_id . owner . local_def_index ) ;
13291329 let self_type = clean_ty ( qself, cx) ;
13301330 let should_show_cast = compute_should_show_cast ( Some ( self_def_id) , & trait_, & self_type) ;
13311331 Type :: QPath {
1332- assoc : Box :: new ( p. segments . last ( ) . expect ( "segments were empty" ) . clean ( cx) ) ,
1332+ assoc : Box :: new ( clean_path_segment (
1333+ p. segments . last ( ) . expect ( "segments were empty" ) ,
1334+ cx,
1335+ ) ) ,
13331336 should_show_cast,
13341337 self_type : Box :: new ( self_type) ,
13351338 trait_,
@@ -1349,7 +1352,7 @@ fn clean_qpath<'tcx>(hir_ty: &hir::Ty<'tcx>, cx: &mut DocContext<'tcx>) -> Type
13491352 let self_type = clean_ty ( qself, cx) ;
13501353 let should_show_cast = compute_should_show_cast ( self_def_id, & trait_, & self_type) ;
13511354 Type :: QPath {
1352- assoc : Box :: new ( segment . clean ( cx) ) ,
1355+ assoc : Box :: new ( clean_path_segment ( segment , cx) ) ,
13531356 should_show_cast,
13541357 self_type : Box :: new ( self_type) ,
13551358 trait_,
@@ -1507,7 +1510,7 @@ pub(crate) fn clean_ty<'tcx>(ty: &hir::Ty<'tcx>, cx: &mut DocContext<'tcx>) -> T
15071510 if !lifetime. is_elided ( ) { Some ( clean_lifetime ( * lifetime, cx) ) } else { None } ;
15081511 DynTrait ( bounds, lifetime)
15091512 }
1510- TyKind :: BareFn ( barefn) => BareFunction ( Box :: new ( barefn . clean ( cx) ) ) ,
1513+ TyKind :: BareFn ( barefn) => BareFunction ( Box :: new ( clean_bare_fn_ty ( barefn , cx) ) ) ,
15111514 // Rustdoc handles `TyKind::Err`s by turning them into `Type::Infer`s.
15121515 TyKind :: Infer | TyKind :: Err => Infer ,
15131516 TyKind :: Typeof ( ..) => panic ! ( "unimplemented type {:?}" , ty. kind) ,
@@ -1823,7 +1826,10 @@ fn clean_variant_data<'tcx>(
18231826}
18241827
18251828fn clean_path < ' tcx > ( path : & hir:: Path < ' tcx > , cx : & mut DocContext < ' tcx > ) -> Path {
1826- Path { res : path. res , segments : path. segments . iter ( ) . map ( |x| x. clean ( cx) ) . collect ( ) }
1829+ Path {
1830+ res : path. res ,
1831+ segments : path. segments . iter ( ) . map ( |x| clean_path_segment ( x, cx) ) . collect ( ) ,
1832+ }
18271833}
18281834
18291835fn clean_generic_args < ' tcx > (
@@ -1861,28 +1867,30 @@ fn clean_generic_args<'tcx>(
18611867 }
18621868}
18631869
1864- impl < ' tcx > Clean < ' tcx , PathSegment > for hir:: PathSegment < ' tcx > {
1865- fn clean ( & self , cx : & mut DocContext < ' tcx > ) -> PathSegment {
1866- PathSegment { name : self . ident . name , args : clean_generic_args ( self . args ( ) , cx) }
1867- }
1870+ fn clean_path_segment < ' tcx > (
1871+ path : & hir:: PathSegment < ' tcx > ,
1872+ cx : & mut DocContext < ' tcx > ,
1873+ ) -> PathSegment {
1874+ PathSegment { name : path. ident . name , args : clean_generic_args ( path. args ( ) , cx) }
18681875}
18691876
1870- impl < ' tcx > Clean < ' tcx , BareFunctionDecl > for hir:: BareFnTy < ' tcx > {
1871- fn clean ( & self , cx : & mut DocContext < ' tcx > ) -> BareFunctionDecl {
1872- let ( generic_params, decl) = enter_impl_trait ( cx, |cx| {
1873- // NOTE: generics must be cleaned before args
1874- let generic_params = self
1875- . generic_params
1876- . iter ( )
1877- . filter ( |p| !is_elided_lifetime ( p) )
1878- . map ( |x| clean_generic_param ( cx, None , x) )
1879- . collect ( ) ;
1880- let args = clean_args_from_types_and_names ( cx, self . decl . inputs , self . param_names ) ;
1881- let decl = clean_fn_decl_with_args ( cx, self . decl , args) ;
1882- ( generic_params, decl)
1883- } ) ;
1884- BareFunctionDecl { unsafety : self . unsafety , abi : self . abi , decl, generic_params }
1885- }
1877+ fn clean_bare_fn_ty < ' tcx > (
1878+ bare_fn : & hir:: BareFnTy < ' tcx > ,
1879+ cx : & mut DocContext < ' tcx > ,
1880+ ) -> BareFunctionDecl {
1881+ let ( generic_params, decl) = enter_impl_trait ( cx, |cx| {
1882+ // NOTE: generics must be cleaned before args
1883+ let generic_params = bare_fn
1884+ . generic_params
1885+ . iter ( )
1886+ . filter ( |p| !is_elided_lifetime ( p) )
1887+ . map ( |x| clean_generic_param ( cx, None , x) )
1888+ . collect ( ) ;
1889+ let args = clean_args_from_types_and_names ( cx, bare_fn. decl . inputs , bare_fn. param_names ) ;
1890+ let decl = clean_fn_decl_with_args ( cx, bare_fn. decl , args) ;
1891+ ( generic_params, decl)
1892+ } ) ;
1893+ BareFunctionDecl { unsafety : bare_fn. unsafety , abi : bare_fn. abi , decl, generic_params }
18861894}
18871895
18881896fn clean_maybe_renamed_item < ' tcx > (
0 commit comments