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/lib.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/lib.rs')
| -rw-r--r-- | src/libsyntax/lib.rs | 11 |
1 files changed, 11 insertions, 0 deletions
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)] |
