diff options
| author | Eduard-Mihai Burtescu <edy.burt@gmail.com> | 2017-02-25 14:13:31 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-02-25 14:13:31 +0200 |
| commit | 3ece892490794709c3fd0ff0ced35440d01f5708 (patch) | |
| tree | 1b4af24e261b07a28cf16326df3f1010e268d7e1 | |
| parent | 411d8e95dbbe8d7de1ea9ca6b95abf95f8c49e38 (diff) | |
| parent | 347e1af66b4b705594c3f668460f252af4e87146 (diff) | |
| download | rust-3ece892490794709c3fd0ff0ced35440d01f5708.tar.gz rust-3ece892490794709c3fd0ff0ced35440d01f5708.zip | |
Rollup merge of #40020 - alexcrichton:fix-unwind-safe, r=sfackler
std: Relax UnwindSafe impl for Unique Add the `?Sized` bound as we don't require the type to be sized. Closes #40011
| -rw-r--r-- | src/libstd/panic.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/panic-safe.rs | 5 |
2 files changed, 5 insertions, 2 deletions
diff --git a/src/libstd/panic.rs b/src/libstd/panic.rs index ac0d0d2afb8..f99634ecac2 100644 --- a/src/libstd/panic.rs +++ b/src/libstd/panic.rs @@ -198,7 +198,7 @@ impl<T: RefUnwindSafe + ?Sized> UnwindSafe for *const T {} #[stable(feature = "catch_unwind", since = "1.9.0")] impl<T: RefUnwindSafe + ?Sized> UnwindSafe for *mut T {} #[unstable(feature = "unique", issue = "27730")] -impl<T: UnwindSafe> UnwindSafe for Unique<T> {} +impl<T: UnwindSafe + ?Sized> UnwindSafe for Unique<T> {} #[unstable(feature = "shared", issue = "27730")] impl<T: RefUnwindSafe + ?Sized> UnwindSafe for Shared<T> {} #[stable(feature = "catch_unwind", since = "1.9.0")] diff --git a/src/test/run-pass/panic-safe.rs b/src/test/run-pass/panic-safe.rs index 493a00ac5d0..9bda07f077f 100644 --- a/src/test/run-pass/panic-safe.rs +++ b/src/test/run-pass/panic-safe.rs @@ -9,7 +9,6 @@ // except according to those terms. #![allow(dead_code)] -#![feature(recover)] use std::panic::{UnwindSafe, AssertUnwindSafe}; use std::cell::RefCell; @@ -40,6 +39,10 @@ fn main() { assert::<&RwLock<i32>>(); assert::<Rc<i32>>(); assert::<Arc<i32>>(); + assert::<Box<[u8]>>(); + + trait Trait: UnwindSafe {} + assert::<Box<Trait>>(); fn bar<T>() { assert::<Mutex<T>>(); |
