@@ -24,6 +24,8 @@ impl base::ProcMacro for BangProcMacro {
2424 span : Span ,
2525 input : TokenStream ,
2626 ) -> Result < TokenStream , ErrorGuaranteed > {
27+ let _timer =
28+ ecx. sess . prof . generic_activity_with_arg ( "expand_proc_macro" , ecx. expansion_descr ( ) ) ;
2729 let proc_macro_backtrace = ecx. ecfg . proc_macro_backtrace ;
2830 let server = proc_macro_server:: Rustc :: new ( ecx) ;
2931 self . client . run ( & EXEC_STRATEGY , server, input, proc_macro_backtrace) . map_err ( |e| {
@@ -48,6 +50,8 @@ impl base::AttrProcMacro for AttrProcMacro {
4850 annotation : TokenStream ,
4951 annotated : TokenStream ,
5052 ) -> Result < TokenStream , ErrorGuaranteed > {
53+ let _timer =
54+ ecx. sess . prof . generic_activity_with_arg ( "expand_proc_macro" , ecx. expansion_descr ( ) ) ;
5155 let proc_macro_backtrace = ecx. ecfg . proc_macro_backtrace ;
5256 let server = proc_macro_server:: Rustc :: new ( ecx) ;
5357 self . client
@@ -97,17 +101,21 @@ impl MultiItemModifier for ProcMacroDerive {
97101 nt_to_tokenstream ( & item, & ecx. sess . parse_sess , CanSynthesizeMissingTokens :: No )
98102 } ;
99103
100- let proc_macro_backtrace = ecx. ecfg . proc_macro_backtrace ;
101- let server = proc_macro_server:: Rustc :: new ( ecx) ;
102- let stream = match self . client . run ( & EXEC_STRATEGY , server, input, proc_macro_backtrace) {
103- Ok ( stream) => stream,
104- Err ( e) => {
105- let mut err = ecx. struct_span_err ( span, "proc-macro derive panicked" ) ;
106- if let Some ( s) = e. as_str ( ) {
107- err. help ( & format ! ( "message: {}" , s) ) ;
104+ let stream = {
105+ let _timer =
106+ ecx. sess . prof . generic_activity_with_arg ( "expand_proc_macro" , ecx. expansion_descr ( ) ) ;
107+ let proc_macro_backtrace = ecx. ecfg . proc_macro_backtrace ;
108+ let server = proc_macro_server:: Rustc :: new ( ecx) ;
109+ match self . client . run ( & EXEC_STRATEGY , server, input, proc_macro_backtrace) {
110+ Ok ( stream) => stream,
111+ Err ( e) => {
112+ let mut err = ecx. struct_span_err ( span, "proc-macro derive panicked" ) ;
113+ if let Some ( s) = e. as_str ( ) {
114+ err. help ( & format ! ( "message: {}" , s) ) ;
115+ }
116+ err. emit ( ) ;
117+ return ExpandResult :: Ready ( vec ! [ ] ) ;
108118 }
109- err. emit ( ) ;
110- return ExpandResult :: Ready ( vec ! [ ] ) ;
111119 }
112120 } ;
113121
0 commit comments