@@ -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 ) ]
@@ -412,29 +412,31 @@ fn ty_search_pat(ty: &Ty<'_>) -> (Pat, Pat) {
412
412
}
413
413
414
414
fn ast_ty_search_pat ( ty : & ast:: Ty ) -> ( Pat , Pat ) {
415
- use ast:: { FnRetTy , MutTy , TraitObjectSyntax , TyKind } ;
415
+ use ast:: { Extern , FnRetTy , MutTy , Safety , TraitObjectSyntax , TyKind } ;
416
416
417
417
match & ty. kind {
418
418
TyKind :: Slice ( ..) | TyKind :: Array ( ..) => ( Pat :: Str ( "[" ) , Pat :: Str ( "]" ) ) ,
419
419
TyKind :: Ptr ( MutTy { ty, .. } ) => ( Pat :: Str ( "*" ) , ast_ty_search_pat ( ty) . 1 ) ,
420
420
TyKind :: Ref ( _, MutTy { ty, .. } ) => ( Pat :: Str ( "&" ) , ast_ty_search_pat ( ty) . 1 ) ,
421
421
TyKind :: FnPtr ( fn_ptr) => (
422
- if fn_ptr. safety . is_unsafe ( ) {
422
+ if let Safety :: Unsafe ( _ ) = fn_ptr. safety {
423
423
Pat :: Str ( "unsafe" )
424
- } else if fn_ptr . abi != ExternAbi :: Rust {
425
- Pat :: Str ( "extern" )
426
- } else {
424
+ } else if let Extern :: Explicit ( strlit , _ ) = fn_ptr . ext
425
+ && strlit . symbol == sym :: rust
426
+ {
427
427
Pat :: MultiStr ( & [ "fn" , "extern" ] )
428
+ } else {
429
+ Pat :: Str ( "extern" )
428
430
} ,
429
- match fn_ptr. decl . output {
430
- FnRetTy :: DefaultReturn ( _) => {
431
- if let [ .., ty ] = fn_ptr. decl . inputs {
432
- ast_ty_search_pat ( ty) . 1
431
+ match & fn_ptr. decl . output {
432
+ FnRetTy :: Default ( _) => {
433
+ if let [ .., param ] = & * fn_ptr. decl . inputs {
434
+ ast_ty_search_pat ( & param . ty ) . 1
433
435
} else {
434
436
Pat :: Str ( "(" )
435
437
}
436
438
} ,
437
- FnRetTy :: Return ( ty) => ast_ty_search_pat ( ty) . 1 ,
439
+ FnRetTy :: Ty ( ty) => ast_ty_search_pat ( ty) . 1 ,
438
440
} ,
439
441
) ,
440
442
TyKind :: Never => ( Pat :: Str ( "!" ) , Pat :: Str ( "!" ) ) ,
0 commit comments