@@ -14,7 +14,7 @@ use ext::base::{ExtCtxt, MacResult, SyntaxExtension};
1414use ext:: base:: { NormalTT , TTMacroExpander } ;
1515use ext:: tt:: macro_parser:: { Success , Error , Failure } ;
1616use ext:: tt:: macro_parser:: { NamedMatch , MatchedSeq , MatchedNonterminal } ;
17- use ext:: tt:: macro_parser:: { parse, parse_or_else } ;
17+ use ext:: tt:: macro_parser:: parse;
1818use parse:: lexer:: new_tt_reader;
1919use parse:: parser:: Parser ;
2020use parse:: token:: { self , special_idents, gensym_ident, NtTT , Token } ;
@@ -211,13 +211,16 @@ fn generic_extension<'cx>(cx: &'cx ExtCtxt,
211211 best_fail_spot = sp;
212212 best_fail_msg = ( * msg) . clone ( ) ;
213213 } ,
214- Error ( sp, ref msg) => panic ! ( cx. span_fatal( sp, & msg[ ..] ) )
214+ Error ( err_sp, ref msg) => {
215+ panic ! ( cx. span_fatal( err_sp. substitute_dummy( sp) , & msg[ ..] ) )
216+ }
215217 }
216218 }
217219 _ => cx. bug ( "non-matcher found in parsed lhses" )
218220 }
219221 }
220- panic ! ( cx. span_fatal( best_fail_spot, & best_fail_msg[ ..] ) ) ;
222+
223+ panic ! ( cx. span_fatal( best_fail_spot. substitute_dummy( sp) , & best_fail_msg[ ..] ) ) ;
221224}
222225
223226// Note that macro-by-example's input is also matched against a token tree:
@@ -266,10 +269,17 @@ pub fn compile<'cx>(cx: &'cx mut ExtCtxt,
266269 None ,
267270 None ,
268271 def. body . clone ( ) ) ;
269- let argument_map = parse_or_else ( cx. parse_sess ( ) ,
270- cx. cfg ( ) ,
271- arg_reader,
272- argument_gram) ;
272+
273+ let argument_map = match parse ( cx. parse_sess ( ) ,
274+ cx. cfg ( ) ,
275+ arg_reader,
276+ & argument_gram) {
277+ Success ( m) => m,
278+ Failure ( sp, str) | Error ( sp, str) => {
279+ panic ! ( cx. parse_sess( ) . span_diagnostic
280+ . span_fatal( sp. substitute_dummy( def. span) , & str [ ..] ) ) ;
281+ }
282+ } ;
273283
274284 // Extract the arguments:
275285 let lhses = match * * argument_map. get ( & lhs_nm) . unwrap ( ) {
0 commit comments