@@ -9,7 +9,7 @@ use rustc_ast::visit::{AssocCtxt, Visitor};
99use rustc_attr:: { self as attr, Deprecation , HasAttrs , Stability } ;
1010use rustc_data_structures:: fx:: FxHashMap ;
1111use rustc_data_structures:: sync:: { self , Lrc } ;
12- use rustc_errors:: { DiagnosticBuilder , DiagnosticId } ;
12+ use rustc_errors:: { DiagnosticBuilder , DiagnosticId , ErrorReported } ;
1313use rustc_parse:: { self , parser, DirectoryOwnership , MACRO_ARGUMENTS } ;
1414use rustc_session:: parse:: ParseSess ;
1515use rustc_span:: edition:: Edition ;
@@ -295,16 +295,26 @@ where
295295}
296296
297297pub trait ProcMacro {
298- fn expand < ' cx > ( & self , ecx : & ' cx mut ExtCtxt < ' _ > , span : Span , ts : TokenStream ) -> TokenStream ;
298+ fn expand < ' cx > (
299+ & self ,
300+ ecx : & ' cx mut ExtCtxt < ' _ > ,
301+ span : Span ,
302+ ts : TokenStream ,
303+ ) -> Result < TokenStream , ErrorReported > ;
299304}
300305
301306impl < F > ProcMacro for F
302307where
303308 F : Fn ( TokenStream ) -> TokenStream ,
304309{
305- fn expand < ' cx > ( & self , _ecx : & ' cx mut ExtCtxt < ' _ > , _span : Span , ts : TokenStream ) -> TokenStream {
310+ fn expand < ' cx > (
311+ & self ,
312+ _ecx : & ' cx mut ExtCtxt < ' _ > ,
313+ _span : Span ,
314+ ts : TokenStream ,
315+ ) -> Result < TokenStream , ErrorReported > {
306316 // FIXME setup implicit context in TLS before calling self.
307- ( * self ) ( ts)
317+ Ok ( ( * self ) ( ts) )
308318 }
309319}
310320
0 commit comments