From b2bcb7229a4bce0c9459807552d071eb2b2c9a0e Mon Sep 17 00:00:00 2001 From: Phil Dawes Date: Sat, 28 Mar 2015 21:58:51 +0000 Subject: 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 --- src/libsyntax/lib.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/libsyntax/lib.rs') diff --git a/src/libsyntax/lib.rs b/src/libsyntax/lib.rs index 0980acd3433..a8b6dae06b9 100644 --- a/src/libsyntax/lib.rs +++ b/src/libsyntax/lib.rs @@ -50,6 +50,17 @@ extern crate libc; extern crate serialize as rustc_serialize; // used by deriving +macro_rules! panictry { + ($e:expr) => ({ + use std::result::Result::{Ok, Err}; + + match $e { + Ok(e) => e, + Err(e) => panic!(e) + } + }) +} + pub mod util { pub mod interner; #[cfg(test)] -- cgit 1.4.1-3-g733a5