about summary refs log tree commit diff
diff options
context:
space:
mode:
authorDavid Wood <david@davidtw.co>2019-04-08 00:19:58 +0200
committerDavid Wood <david@davidtw.co>2019-04-08 00:19:58 +0200
commit77bdb354bfe1a26ba90b2889702e647c3d9c8d7e (patch)
treea19e672ab4781596a03db7f894da68ebcc021bae
parent4fb888bf04d2f1913e78e9eae51ac5695df1dc01 (diff)
downloadrust-77bdb354bfe1a26ba90b2889702e647c3d9c8d7e.tar.gz
rust-77bdb354bfe1a26ba90b2889702e647c3d9c8d7e.zip
Add test demonstrating existing behaviour.
This commit adds a test that demonstrates the compiler's current
behaviour when a function attempts to return a value that was unwrapped
by a `?` operator when the omission of `?` would have made the code
compile.
-rw-r--r--src/test/ui/issue-59756.rs15
-rw-r--r--src/test/ui/issue-59756.stderr12
2 files changed, 27 insertions, 0 deletions
diff --git a/src/test/ui/issue-59756.rs b/src/test/ui/issue-59756.rs
new file mode 100644
index 00000000000..2ce96943275
--- /dev/null
+++ b/src/test/ui/issue-59756.rs
@@ -0,0 +1,15 @@
+#![allow(warnings)]
+
+struct A;
+struct B;
+
+fn foo() -> Result<A, B> {
+    Ok(A)
+}
+
+fn bar() -> Result<A, B> {
+    foo()?
+    //~^ ERROR try expression alternatives have incompatible types [E0308]
+}
+
+fn main() {}
diff --git a/src/test/ui/issue-59756.stderr b/src/test/ui/issue-59756.stderr
new file mode 100644
index 00000000000..58491cdaa58
--- /dev/null
+++ b/src/test/ui/issue-59756.stderr
@@ -0,0 +1,12 @@
+error[E0308]: try expression alternatives have incompatible types
+  --> $DIR/issue-59756.rs:11:5
+   |
+LL |     foo()?
+   |     ^^^^^^ expected enum `std::result::Result`, found struct `A`
+   |
+   = note: expected type `std::result::Result<A, B>`
+              found type `A`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.