about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRalf Jung <post@ralfj.de>2018-07-29 13:11:01 +0200
committerRalf Jung <post@ralfj.de>2018-07-29 13:11:01 +0200
commitc7f01aa175c97c1103f45f73aad8b679edc3d045 (patch)
tree59203fa28d537aa7c90d5e8162a97beaf1bc52e6 /src
parent6998b369faf3daf849f538d636bac9eda659fa5a (diff)
downloadrust-c7f01aa175c97c1103f45f73aad8b679edc3d045.tar.gz
rust-c7f01aa175c97c1103f45f73aad8b679edc3d045.zip
invalid_const_promotion: check if we get the right signal
Diffstat (limited to 'src')
-rw-r--r--src/test/run-pass/invalid_const_promotion.rs23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/test/run-pass/invalid_const_promotion.rs b/src/test/run-pass/invalid_const_promotion.rs
index 29a4b921992..53cb4c4b009 100644
--- a/src/test/run-pass/invalid_const_promotion.rs
+++ b/src/test/run-pass/invalid_const_promotion.rs
@@ -11,18 +11,37 @@
 // ignore-wasm32
 // ignore-emscripten
 
-#![feature(const_fn)]
+#![feature(const_fn, libc)]
 #![allow(const_err)]
 
+extern crate libc;
+
 use std::env;
 use std::process::{Command, Stdio};
 
+// this will panic in debug mode
 const fn bar() -> usize { 0 - 1 }
 
 fn foo() {
     let _: &'static _ = &bar();
 }
 
+#[cfg(unix)]
+fn check_status(status: std::process::ExitStatus)
+{
+    use libc;
+    use std::os::unix::process::ExitStatusExt;
+
+    assert!(status.signal() == Some(libc::SIGILL)
+            || status.signal() == Some(libc::SIGABRT));
+}
+
+#[cfg(not(unix))]
+fn check_status(status: std::process::ExitStatus)
+{
+    assert!(!status.success());
+}
+
 fn main() {
     let args: Vec<String> = env::args().collect();
     if args.len() > 1 && args[1] == "test" {
@@ -34,5 +53,5 @@ fn main() {
         .stdout(Stdio::piped())
         .stdin(Stdio::piped())
         .arg("test").output().unwrap();
-    assert!(!p.status.success());
+    check_status(p.status);
 }