about summary refs log tree commit diff
path: root/src/libcore/tests
diff options
context:
space:
mode:
authorMikhail Zabaluev <mikhail.zabaluev@gmail.com>2019-11-02 22:12:51 +0200
committerMikhail Zabaluev <mikhail.zabaluev@gmail.com>2019-12-22 08:35:10 +0200
commit9a99a2159bb57ee0f1a52bb3f989a903df2f8cb4 (patch)
tree14d7e93c6eb7c06bfc78b11837eaf77bc37da4fa /src/libcore/tests
parenta20013b129c10907aee0bfb5bf1cac387e48eb51 (diff)
downloadrust-9a99a2159bb57ee0f1a52bb3f989a903df2f8cb4.tar.gz
rust-9a99a2159bb57ee0f1a52bb3f989a903df2f8cb4.zip
libcore: test Result::unwrap_infallible
Diffstat (limited to 'src/libcore/tests')
-rw-r--r--src/libcore/tests/lib.rs2
-rw-r--r--src/libcore/tests/result.rs22
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)?;