diff options
| author | Phil Dawes <phil@phildawes.net> | 2015-03-28 21:58:51 +0000 |
|---|---|---|
| committer | Phil Dawes <phil@phildawes.net> | 2015-04-05 09:52:50 +0100 |
| commit | b2bcb7229a4bce0c9459807552d071eb2b2c9a0e (patch) | |
| tree | f08ef63bff0abde2d9bcce4eb751681df21b9b98 /src/libsyntax/ext/base.rs | |
| parent | f73f3233f10e506ec41c17126e66953ed6996feb (diff) | |
| download | rust-b2bcb7229a4bce0c9459807552d071eb2b2c9a0e.tar.gz rust-b2bcb7229a4bce0c9459807552d071eb2b2c9a0e.zip | |
Work towards a non-panicing parser (libsyntax)
- Functions in parser.rs return PResult<> rather than panicing - Other functions in libsyntax call panic! explicitly for now if they rely on panicing behaviour. - 'panictry!' macro added as scaffolding while converting panicing functions. (This does the same as 'unwrap()' but is easier to grep for and turn into try!()) - Leaves panicing wrappers for the following functions so that the quote_* macros behave the same: - parse_expr, parse_item, parse_pat, parse_arm, parse_ty, parse_stmt
Diffstat (limited to 'src/libsyntax/ext/base.rs')
| -rw-r--r-- | src/libsyntax/ext/base.rs | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 71fba789ff8..80ee92608a5 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -652,9 +652,9 @@ impl<'a> ExtCtxt<'a> { pub fn bt_push(&mut self, ei: ExpnInfo) { self.recursion_count += 1; if self.recursion_count > self.ecfg.recursion_limit { - self.span_fatal(ei.call_site, + panic!(self.span_fatal(ei.call_site, &format!("recursion limit reached while expanding the macro `{}`", - ei.callee.name)); + ei.callee.name))); } let mut call_site = ei.call_site; @@ -699,7 +699,7 @@ impl<'a> ExtCtxt<'a> { /// value doesn't have to match anything) pub fn span_fatal(&self, sp: Span, msg: &str) -> ! { self.print_backtrace(); - self.parse_sess.span_diagnostic.span_fatal(sp, msg); + panic!(self.parse_sess.span_diagnostic.span_fatal(sp, msg)); } /// Emit `msg` attached to `sp`, without immediately stopping @@ -817,7 +817,7 @@ pub fn get_exprs_from_tts(cx: &mut ExtCtxt, let mut es = Vec::new(); while p.token != token::Eof { es.push(cx.expander().fold_expr(p.parse_expr())); - if p.eat(&token::Comma) { + if panictry!(p.eat(&token::Comma)){ continue; } if p.token != token::Eof { |
