summary refs log tree commit diff
path: root/src/libsyntax/lib.rs
diff options
context:
space:
mode:
authorPhil Dawes <phil@phildawes.net>2015-03-28 21:58:51 +0000
committerPhil Dawes <phil@phildawes.net>2015-04-05 09:52:50 +0100
commitb2bcb7229a4bce0c9459807552d071eb2b2c9a0e (patch)
treef08ef63bff0abde2d9bcce4eb751681df21b9b98 /src/libsyntax/lib.rs
parentf73f3233f10e506ec41c17126e66953ed6996feb (diff)
downloadrust-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.rs11
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)]