about summary refs log tree commit diff
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2019-04-22 15:39:38 -0700
committerManish Goregaokar <manishsmail@gmail.com>2019-04-23 08:01:42 -0700
commitb03cf3ff97f3edc0f153a5f069ef431ab642873e (patch)
tree73a78b37d080f938efe3c364f20dce1a36601d23
parent7e2043de2fe8397f25b9db47992b58256727e44a (diff)
downloadrust-b03cf3ff97f3edc0f153a5f069ef431ab642873e.tar.gz
rust-b03cf3ff97f3edc0f153a5f069ef431ab642873e.zip
Add test
-rw-r--r--tests/ui/methods.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/ui/methods.rs b/tests/ui/methods.rs
index 3a8aedcd659..395271b37eb 100644
--- a/tests/ui/methods.rs
+++ b/tests/ui/methods.rs
@@ -268,3 +268,21 @@ fn main() {
     let opt = Some(0);
     let _ = opt.unwrap();
 }
+
+struct Foo(u8);
+#[rustfmt::skip]
+fn test_or_with_ctors() {
+    let opt = Some(1);
+    let opt_opt = Some(Some(1));
+    // we also test for const promotion, this makes sure we don't hit that
+    let two = 2;
+
+    let _ = opt_opt.unwrap_or(Some(2));
+    let _ = opt_opt.unwrap_or(Some(two));
+    let _ = opt.ok_or(Some(2));
+    let _ = opt.ok_or(Some(two));
+    let _ = opt.ok_or(Foo(2));
+    let _ = opt.ok_or(Foo(two));
+    let _ = opt.or(Some(2));
+    let _ = opt.or(Some(two));
+}