@@ -29,7 +29,7 @@ use rustc_lint::{EarlyContext, LateContext, LintContext};
29
29
use rustc_middle:: ty:: TyCtxt ;
30
30
use rustc_session:: Session ;
31
31
use rustc_span:: symbol:: { Ident , kw} ;
32
- use rustc_span:: { Span , Symbol } ;
32
+ use rustc_span:: { Span , Symbol , sym } ;
33
33
34
34
/// The search pattern to look for. Used by `span_matches_pat`
35
35
#[ derive( Clone ) ]
@@ -415,29 +415,31 @@ fn ty_search_pat(ty: &Ty<'_>) -> (Pat, Pat) {
415
415
}
416
416
417
417
fn ast_ty_search_pat ( ty : & ast:: Ty ) -> ( Pat , Pat ) {
418
- use ast:: { FnRetTy , MutTy , TraitObjectSyntax , TyKind } ;
418
+ use ast:: { Extern , FnRetTy , MutTy , Safety , TraitObjectSyntax , TyKind } ;
419
419
420
420
match & ty. kind {
421
421
TyKind :: Slice ( ..) | TyKind :: Array ( ..) => ( Pat :: Str ( "[" ) , Pat :: Str ( "]" ) ) ,
422
422
TyKind :: Ptr ( MutTy { ty, .. } ) => ( Pat :: Str ( "*" ) , ast_ty_search_pat ( ty) . 1 ) ,
423
423
TyKind :: Ref ( _, MutTy { ty, .. } ) => ( Pat :: Str ( "&" ) , ast_ty_search_pat ( ty) . 1 ) ,
424
424
TyKind :: FnPtr ( fn_ptr) => (
425
- if fn_ptr. safety . is_unsafe ( ) {
425
+ if let Safety :: Unsafe ( _ ) = fn_ptr. safety {
426
426
Pat :: Str ( "unsafe" )
427
- } else if fn_ptr . abi != ExternAbi :: Rust {
428
- Pat :: Str ( "extern" )
429
- } else {
427
+ } else if let Extern :: Explicit ( strlit , _ ) = fn_ptr . ext
428
+ && strlit . symbol == sym :: rust
429
+ {
430
430
Pat :: MultiStr ( & [ "fn" , "extern" ] )
431
+ } else {
432
+ Pat :: Str ( "extern" )
431
433
} ,
432
- match fn_ptr. decl . output {
433
- FnRetTy :: DefaultReturn ( _) => {
434
- if let [ .., ty ] = fn_ptr. decl . inputs {
435
- ast_ty_search_pat ( ty) . 1
434
+ match & fn_ptr. decl . output {
435
+ FnRetTy :: Default ( _) => {
436
+ if let [ .., param ] = & * fn_ptr. decl . inputs {
437
+ ast_ty_search_pat ( & param . ty ) . 1
436
438
} else {
437
439
Pat :: Str ( "(" )
438
440
}
439
441
} ,
440
- FnRetTy :: Return ( ty) => ast_ty_search_pat ( ty) . 1 ,
442
+ FnRetTy :: Ty ( ty) => ast_ty_search_pat ( ty) . 1 ,
441
443
} ,
442
444
) ,
443
445
TyKind :: Never => ( Pat :: Str ( "!" ) , Pat :: Str ( "!" ) ) ,
0 commit comments