@@ -19,7 +19,7 @@ use rustc_ast::token::CommentKind;
19
19
use rustc_hir:: intravisit:: FnKind ;
20
20
use rustc_hir:: {
21
21
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 ,
23
23
TraitImplHeader , TraitItem , TraitItemKind , Ty , TyKind , UnOp , UnsafeSource , Variant , VariantData , YieldSource ,
24
24
} ;
25
25
use rustc_lint:: { EarlyContext , LateContext , LintContext } ;
@@ -280,16 +280,17 @@ fn trait_item_search_pat(item: &TraitItem<'_>) -> (Pat, Pat) {
280
280
}
281
281
282
282
fn 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 {
284
284
ImplItemKind :: Const ( ..) => ( Pat :: Str ( "const" ) , Pat :: Str ( ";" ) ) ,
285
285
ImplItemKind :: Type ( ..) => ( Pat :: Str ( "type" ) , Pat :: Str ( ";" ) ) ,
286
286
ImplItemKind :: Fn ( sig, ..) => ( fn_header_search_pat ( sig. header ) , Pat :: Str ( "" ) ) ,
287
287
} ;
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)
293
294
}
294
295
295
296
fn field_def_search_pat ( def : & FieldDef < ' _ > ) -> ( Pat , Pat ) {
@@ -313,21 +314,20 @@ fn variant_search_pat(v: &Variant<'_>) -> (Pat, Pat) {
313
314
}
314
315
315
316
fn 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 {
317
318
FnKind :: ItemFn ( .., header) => ( fn_header_search_pat ( * header) , Pat :: Str ( "" ) ) ,
318
319
FnKind :: Method ( .., sig) => ( fn_header_search_pat ( sig. header ) , Pat :: Str ( "" ) ) ,
319
320
FnKind :: Closure => return ( Pat :: Str ( "" ) , expr_search_pat ( tcx, body. value ) . 1 ) ,
320
321
} ;
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" )
327
327
}
328
328
} ,
329
- Node :: TraitItem ( _) => start_pat ,
330
- _ => Pat :: Str ( "" ) ,
329
+ Node :: ImplItem ( _ ) | Node :: TraitItem ( _) => { } ,
330
+ _ => start_pat = Pat :: Str ( "" ) ,
331
331
} ;
332
332
( start_pat, end_pat)
333
333
}
0 commit comments