about summary refs log tree commit diff
path: root/src/libcore
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-11-27 18:05:20 -0800
committerPatrick Walton <pcwalton@mimiga.net>2012-11-28 11:28:56 -0800
commit07f4031bb40967f9c5c0ee61b71e1d9cffd34b58 (patch)
treea7c7077c1d6e298f151b328ac727a5ef534e288f /src/libcore
parent61cfec3c52d3ac316b627c4b20c9c6e81e7521f2 (diff)
libsyntax: Implement a macro `die!` to replace the `fail` expression. r=brson
Diffstat (limited to 'src/libcore')
-rw-r--r--src/libcore/rt.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/libcore/rt.rs b/src/libcore/rt.rs
index 9bc83a5f904..04a8ee30235 100644
--- a/src/libcore/rt.rs
+++ b/src/libcore/rt.rs
@@ -34,9 +34,12 @@ extern mod rustrt {
 // 'rt_', otherwise the compiler won't find it. To fix this, see
 // gather_rust_rtcalls.
 #[rt(fail_)]
-pub fn rt_fail_(expr: *c_char, file: *c_char, line: size_t) {
-    cleanup_stack_for_failure();
-    rustrt::rust_upcall_fail(expr, file, line);
+pub fn rt_fail_(expr: *c_char, file: *c_char, line: size_t) -> ! {
+    unsafe {
+        cleanup_stack_for_failure();
+        rustrt::rust_upcall_fail(expr, file, line);
+        cast::transmute(())
+    }
 }
 
 #[rt(fail_bounds_check)]