about summary refs log tree commit diff
path: root/src/test/ui/inference
diff options
context:
space:
mode:
authorYuki Okushi <yuki.okushi@huawei.com>2021-06-17 06:35:42 +0900
committerYuki Okushi <yuki.okushi@huawei.com>2021-09-17 13:13:28 +0900
commit378300a63d1951e2718a6b0a077439fc1b14742b (patch)
tree8a982f7ef97c997308268d9de13532a72e313104 /src/test/ui/inference
parent78a46efff06558674b51c10d8d81758285746ab5 (diff)
Make diagnostics clearer for `?` operators
Diffstat (limited to 'src/test/ui/inference')
-rw-r--r--src/test/ui/inference/issue-71309.rs7
-rw-r--r--src/test/ui/inference/issue-71309.stderr15
2 files changed, 22 insertions, 0 deletions
diff --git a/src/test/ui/inference/issue-71309.rs b/src/test/ui/inference/issue-71309.rs
new file mode 100644
index 00000000000..c31107d8fed
--- /dev/null
+++ b/src/test/ui/inference/issue-71309.rs
@@ -0,0 +1,7 @@
+fn foo(x: Result<i32, ()>) -> Result<(), ()> {
+    let y: u32 = x?;
+    //~^ ERROR: `?` operator has incompatible types
+    Ok(())
+}
+
+fn main() {}
diff --git a/src/test/ui/inference/issue-71309.stderr b/src/test/ui/inference/issue-71309.stderr
new file mode 100644
index 00000000000..af8714f1c80
--- /dev/null
+++ b/src/test/ui/inference/issue-71309.stderr
@@ -0,0 +1,15 @@
+error[E0308]: `?` operator has incompatible types
+  --> $DIR/issue-71309.rs:2:18
+   |
+LL |     let y: u32 = x?;
+   |                  ^^ expected `u32`, found `i32`
+   |
+   = note: `?` operator cannot convert from `i32` to `u32`
+help: you can convert an `i32` to a `u32` and panic if the converted value doesn't fit
+   |
+LL |     let y: u32 = x?.try_into().unwrap();
+   |                    ++++++++++++++++++++
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.