about summary refs log tree commit diff
path: root/src/libstd/io
diff options
context:
space:
mode:
authorEvan Simmons <esims89@gmail.com>2018-07-01 14:30:16 -0700
committerEvan Simmons <esims89@gmail.com>2018-07-02 12:54:30 -0700
commit9797665b286db3f34cc475560a68380012fadde7 (patch)
treeb733aaf8681cd132408392b037d604c63fd27586 /src/libstd/io
parenta2be769fd50403a07c45677f8f285491c8e90d74 (diff)
downloadrust-9797665b286db3f34cc475560a68380012fadde7.tar.gz
rust-9797665b286db3f34cc475560a68380012fadde7.zip
Make Stdio handle UnwindSafe
Diffstat (limited to 'src/libstd/io')
-rw-r--r--src/libstd/io/stdio.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/libstd/io/stdio.rs b/src/libstd/io/stdio.rs
index 2472bed5ba4..fce85a200ba 100644
--- a/src/libstd/io/stdio.rs
+++ b/src/libstd/io/stdio.rs
@@ -712,10 +712,32 @@ pub fn _eprint(args: fmt::Arguments) {
 
 #[cfg(test)]
 mod tests {
+    use panic::{UnwindSafe, RefUnwindSafe};
     use thread;
     use super::*;
 
     #[test]
+    fn stdout_unwind_safe() {
+        assert_unwind_safe::<Stdout>();
+    }
+    #[test]
+    fn stdoutlock_unwind_safe() {
+        assert_unwind_safe::<StdoutLock>();
+        assert_unwind_safe::<StdoutLock<'static>>();
+    }
+    #[test]
+    fn stderr_unwind_safe() {
+        assert_unwind_safe::<Stderr>();
+    }
+    #[test]
+    fn stderrlock_unwind_safe() {
+        assert_unwind_safe::<StderrLock>();
+        assert_unwind_safe::<StderrLock<'static>>();
+    }
+
+    fn assert_unwind_safe<T: UnwindSafe + RefUnwindSafe>() {}
+
+    #[test]
     #[cfg_attr(target_os = "emscripten", ignore)]
     fn panic_doesnt_poison() {
         thread::spawn(|| {