about summary refs log tree commit diff
path: root/src/libcore/macros.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-05-17 17:53:50 -0700
committerBrian Anderson <banderson@mozilla.com>2013-05-17 17:53:50 -0700
commit03a8e59615f7ced4def8adaad41cfcb0fd0f9d29 (patch)
tree560956d27a7945a464d8d8ec742be4ea5fbecb69 /src/libcore/macros.rs
parent2d28d645422c1617be58c8ca7ad9a457264ca850 (diff)
parent018dfaf9a6a25f5dba0ac642ff6c426c549bc4d7 (diff)
downloadrust-03a8e59615f7ced4def8adaad41cfcb0fd0f9d29.tar.gz
rust-03a8e59615f7ced4def8adaad41cfcb0fd0f9d29.zip
Merge remote-tracking branch 'brson/io' into incoming
Diffstat (limited to 'src/libcore/macros.rs')
-rw-r--r--src/libcore/macros.rs16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/libcore/macros.rs b/src/libcore/macros.rs
index b19a753b715..fda48b6ffb7 100644
--- a/src/libcore/macros.rs
+++ b/src/libcore/macros.rs
@@ -30,10 +30,24 @@ macro_rules! rtdebug (
     ($( $arg:expr),+) => ( $(let _ = $arg)*; )
 )
 
+macro_rules! rtassert (
+    ( $arg:expr ) => ( {
+        if !$arg {
+            abort!("assertion failed: %s", stringify!($arg));
+        }
+    } )
+)
+
 macro_rules! abort(
     ($( $msg:expr),+) => ( {
         rtdebug!($($msg),+);
 
-        unsafe { ::libc::abort(); }
+        do_abort();
+
+        // NB: This is in a fn to avoid putting the `unsafe` block in a macro,
+        // which causes spurious 'unnecessary unsafe block' warnings.
+        fn do_abort() -> ! {
+            unsafe { ::libc::abort(); }
+        }
     } )
 )