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.
This commit is contained in:
David Wood 2019-04-08 00:19:58 +02:00
parent 4fb888bf04
commit 77bdb354bf
No known key found for this signature in database
GPG key ID: 01760B4F9F53F154
2 changed files with 27 additions and 0 deletions

View file

@ -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() {}

View file

@ -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`.