@@ -42,7 +42,7 @@ use rustc_hir::intravisit::{NestedVisitorMap, Visitor};
4242use rustc_hir:: Node ;
4343use rustc_hir:: * ;
4444use rustc_lint:: { LateContext , Level , Lint , LintContext } ;
45- use rustc_span:: hygiene:: ExpnKind ;
45+ use rustc_span:: hygiene:: { ExpnKind , MacroKind } ;
4646use rustc_span:: symbol:: { self , kw, Symbol } ;
4747use rustc_span:: { BytePos , Pos , Span , DUMMY_SP } ;
4848use smallvec:: SmallVec ;
@@ -758,14 +758,15 @@ pub fn is_expn_of(mut span: Span, name: &str) -> Option<Span> {
758758 loop {
759759 if span. from_expansion ( ) {
760760 let data = span. ctxt ( ) . outer_expn_data ( ) ;
761- let mac_name = data. kind . descr ( ) ;
762761 let new_span = data. call_site ;
763762
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+ }
768767 }
768+
769+ span = new_span;
769770 } else {
770771 return None ;
771772 }
@@ -785,17 +786,16 @@ pub fn is_expn_of(mut span: Span, name: &str) -> Option<Span> {
785786pub fn is_direct_expn_of ( span : Span , name : & str ) -> Option < Span > {
786787 if span. from_expansion ( ) {
787788 let data = span. ctxt ( ) . outer_expn_data ( ) ;
788- let mac_name = data. kind . descr ( ) ;
789789 let new_span = data. call_site ;
790790
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+ }
795795 }
796- } else {
797- None
798796 }
797+
798+ None
799799}
800800
801801/// Convenience function to get the return type of a function.
0 commit comments