diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcore/tests/lib.rs | 2 | ||||
| -rw-r--r-- | src/libcore/tests/result.rs | 22 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/libcore/tests/lib.rs b/src/libcore/tests/lib.rs index 1f20ebc01e9..46560242418 100644 --- a/src/libcore/tests/lib.rs +++ b/src/libcore/tests/lib.rs @@ -39,6 +39,8 @@ #![feature(slice_from_raw_parts)] #![feature(const_slice_from_raw_parts)] #![feature(const_raw_ptr_deref)] +#![feature(never_type)] +#![feature(unwrap_infallible)] extern crate test; diff --git a/src/libcore/tests/result.rs b/src/libcore/tests/result.rs index 163f8d0ab37..8d17790af56 100644 --- a/src/libcore/tests/result.rs +++ b/src/libcore/tests/result.rs @@ -198,6 +198,28 @@ pub fn test_unwrap_or_default() { } #[test] +pub fn test_unwrap_infallible() { + fn infallible_op() -> Result<isize, !> { + Ok(666) + } + + assert_eq!(infallible_op().unwrap_infallible(), 666); + + enum MyNeverToken {} + impl From<MyNeverToken> for ! { + fn from(never: MyNeverToken) -> ! { + match never {} + } + } + + fn infallible_op2() -> Result<isize, MyNeverToken> { + Ok(667) + } + + assert_eq!(infallible_op2().unwrap_infallible(), 667); +} + +#[test] fn test_try() { fn try_result_some() -> Option<u8> { let val = Ok(1)?; |
