diff options
| author | David Wood <david@davidtw.co> | 2019-04-08 00:19:58 +0200 |
|---|---|---|
| committer | David Wood <david@davidtw.co> | 2019-04-08 00:19:58 +0200 |
| commit | 77bdb354bfe1a26ba90b2889702e647c3d9c8d7e (patch) | |
| tree | a19e672ab4781596a03db7f894da68ebcc021bae | |
| parent | 4fb888bf04d2f1913e78e9eae51ac5695df1dc01 (diff) | |
| download | rust-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.rs | 15 | ||||
| -rw-r--r-- | src/test/ui/issue-59756.stderr | 12 |
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`. |
