@@ -5,7 +5,7 @@ use rustc_ast::ast::{self, ItemKind, MetaItemKind, NestedMetaItem};
55use rustc_ast:: token;
66use rustc_ast:: tokenstream:: { self , TokenStream } ;
77use rustc_data_structures:: sync:: Lrc ;
8- use rustc_errors:: { Applicability , FatalError } ;
8+ use rustc_errors:: { Applicability , ErrorReported , FatalError } ;
99use rustc_span:: symbol:: sym;
1010use rustc_span:: { Span , DUMMY_SP } ;
1111
@@ -21,21 +21,16 @@ impl base::ProcMacro for BangProcMacro {
2121 ecx : & ' cx mut ExtCtxt < ' _ > ,
2222 span : Span ,
2323 input : TokenStream ,
24- ) -> TokenStream {
24+ ) -> Result < TokenStream , ErrorReported > {
2525 let server = proc_macro_server:: Rustc :: new ( ecx) ;
26- match self . client . run ( & EXEC_STRATEGY , server, input) {
27- Ok ( stream) => stream,
28- Err ( e) => {
29- let msg = "proc macro panicked" ;
30- let mut err = ecx. struct_span_fatal ( span, msg) ;
31- if let Some ( s) = e. as_str ( ) {
32- err. help ( & format ! ( "message: {}" , s) ) ;
33- }
34-
35- err. emit ( ) ;
36- FatalError . raise ( ) ;
26+ self . client . run ( & EXEC_STRATEGY , server, input) . map_err ( |e| {
27+ let mut err = ecx. struct_span_err ( span, "proc macro panicked" ) ;
28+ if let Some ( s) = e. as_str ( ) {
29+ err. help ( & format ! ( "message: {}" , s) ) ;
3730 }
38- }
31+ err. emit ( ) ;
32+ ErrorReported
33+ } )
3934 }
4035}
4136
0 commit comments