@@ -42,7 +42,7 @@ use rustc_hir::intravisit::{NestedVisitorMap, Visitor};
42
42
use rustc_hir:: Node ;
43
43
use rustc_hir:: * ;
44
44
use rustc_lint:: { LateContext , Level , Lint , LintContext } ;
45
- use rustc_span:: hygiene:: ExpnKind ;
45
+ use rustc_span:: hygiene:: { ExpnKind , MacroKind } ;
46
46
use rustc_span:: symbol:: { self , kw, Symbol } ;
47
47
use rustc_span:: { BytePos , Pos , Span , DUMMY_SP } ;
48
48
use smallvec:: SmallVec ;
@@ -758,14 +758,15 @@ pub fn is_expn_of(mut span: Span, name: &str) -> Option<Span> {
758
758
loop {
759
759
if span. from_expansion ( ) {
760
760
let data = span. ctxt ( ) . outer_expn_data ( ) ;
761
- let mac_name = data. kind . descr ( ) ;
762
761
let new_span = data. call_site ;
763
762
764
- if mac_name . as_str ( ) == name {
765
- return Some ( new_span ) ;
766
- } else {
767
- span = new_span ;
763
+ if let ExpnKind :: Macro ( MacroKind :: Bang , mac_name ) = data . kind {
764
+ if mac_name . as_str ( ) == name {
765
+ return Some ( new_span ) ;
766
+ }
768
767
}
768
+
769
+ span = new_span;
769
770
} else {
770
771
return None ;
771
772
}
@@ -785,17 +786,16 @@ pub fn is_expn_of(mut span: Span, name: &str) -> Option<Span> {
785
786
pub fn is_direct_expn_of ( span : Span , name : & str ) -> Option < Span > {
786
787
if span. from_expansion ( ) {
787
788
let data = span. ctxt ( ) . outer_expn_data ( ) ;
788
- let mac_name = data. kind . descr ( ) ;
789
789
let new_span = data. call_site ;
790
790
791
- if mac_name . as_str ( ) == name {
792
- Some ( new_span )
793
- } else {
794
- None
791
+ if let ExpnKind :: Macro ( MacroKind :: Bang , mac_name ) = data . kind {
792
+ if mac_name . as_str ( ) == name {
793
+ return Some ( new_span ) ;
794
+ }
795
795
}
796
- } else {
797
- None
798
796
}
797
+
798
+ None
799
799
}
800
800
801
801
/// Convenience function to get the return type of a function.
0 commit comments