about summary refs log tree commit diff
diff options
context:
space:
mode:
-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));
+}