@@ -19,7 +19,7 @@ use rustc_ast::token::CommentKind;
1919use rustc_hir:: intravisit:: FnKind ;
2020use rustc_hir:: {
2121 Block , BlockCheckMode , Body , Closure , Destination , Expr , ExprKind , FieldDef , FnHeader , FnRetTy , HirId , Impl ,
22- ImplItem , ImplItemKind , IsAuto , Item , ItemKind , Lit , LoopSource , MatchSource , MutTy , Node , Path , QPath , Safety ,
22+ ImplItem , ImplItemImplKind , ImplItemKind , IsAuto , Item , ItemKind , Lit , LoopSource , MatchSource , MutTy , Node , Path , QPath , Safety ,
2323 TraitImplHeader , TraitItem , TraitItemKind , Ty , TyKind , UnOp , UnsafeSource , Variant , VariantData , YieldSource ,
2424} ;
2525use rustc_lint:: { EarlyContext , LateContext , LintContext } ;
@@ -280,16 +280,17 @@ fn trait_item_search_pat(item: &TraitItem<'_>) -> (Pat, Pat) {
280280}
281281
282282fn impl_item_search_pat ( item : & ImplItem < ' _ > ) -> ( Pat , Pat ) {
283- let ( start_pat, end_pat) = match & item. kind {
283+ let ( mut start_pat, end_pat) = match & item. kind {
284284 ImplItemKind :: Const ( ..) => ( Pat :: Str ( "const" ) , Pat :: Str ( ";" ) ) ,
285285 ImplItemKind :: Type ( ..) => ( Pat :: Str ( "type" ) , Pat :: Str ( ";" ) ) ,
286286 ImplItemKind :: Fn ( sig, ..) => ( fn_header_search_pat ( sig. header ) , Pat :: Str ( "" ) ) ,
287287 } ;
288- if item. vis_span . is_empty ( ) {
289- ( start_pat, end_pat)
290- } else {
291- ( Pat :: Str ( "pub" ) , end_pat)
292- }
288+ if let ImplItemImplKind :: Inherent { vis_span, .. } = item. impl_kind
289+ && !vis_span. is_empty ( )
290+ {
291+ start_pat = Pat :: Str ( "pub" ) ;
292+ } ;
293+ ( start_pat, end_pat)
293294}
294295
295296fn field_def_search_pat ( def : & FieldDef < ' _ > ) -> ( Pat , Pat ) {
@@ -313,21 +314,20 @@ fn variant_search_pat(v: &Variant<'_>) -> (Pat, Pat) {
313314}
314315
315316fn fn_kind_pat ( tcx : TyCtxt < ' _ > , kind : & FnKind < ' _ > , body : & Body < ' _ > , hir_id : HirId ) -> ( Pat , Pat ) {
316- let ( start_pat, end_pat) = match kind {
317+ let ( mut start_pat, end_pat) = match kind {
317318 FnKind :: ItemFn ( .., header) => ( fn_header_search_pat ( * header) , Pat :: Str ( "" ) ) ,
318319 FnKind :: Method ( .., sig) => ( fn_header_search_pat ( sig. header ) , Pat :: Str ( "" ) ) ,
319320 FnKind :: Closure => return ( Pat :: Str ( "" ) , expr_search_pat ( tcx, body. value ) . 1 ) ,
320321 } ;
321- let start_pat = match tcx. hir_node ( hir_id) {
322- Node :: Item ( Item { vis_span, .. } ) | Node :: ImplItem ( ImplItem { vis_span, .. } ) => {
323- if vis_span. is_empty ( ) {
324- start_pat
325- } else {
326- Pat :: Str ( "pub" )
322+ match tcx. hir_node ( hir_id) {
323+ Node :: Item ( Item { vis_span, .. } )
324+ | Node :: ImplItem ( ImplItem { impl_kind : ImplItemImplKind :: Inherent { vis_span, .. } , .. } ) => {
325+ if !vis_span. is_empty ( ) {
326+ start_pat = Pat :: Str ( "pub" )
327327 }
328328 } ,
329- Node :: TraitItem ( _) => start_pat ,
330- _ => Pat :: Str ( "" ) ,
329+ Node :: ImplItem ( _ ) | Node :: TraitItem ( _) => { } ,
330+ _ => start_pat = Pat :: Str ( "" ) ,
331331 } ;
332332 ( start_pat, end_pat)
333333}
0 commit comments