about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/closures/issue-87461.rs29
-rw-r--r--src/test/ui/closures/issue-87461.stderr21
2 files changed, 50 insertions, 0 deletions
diff --git a/src/test/ui/closures/issue-87461.rs b/src/test/ui/closures/issue-87461.rs
new file mode 100644
index 00000000000..0151080eeb4
--- /dev/null
+++ b/src/test/ui/closures/issue-87461.rs
@@ -0,0 +1,29 @@
+// Regression test for #87461.
+
+// edition:2021
+
+async fn func() -> Result<u16, u64> {
+    let _ = async {
+        Err(42u64)
+    }.await?;
+
+    Ok(())
+    //~^ ERROR: mismatched types [E0308]
+}
+
+async fn func2() -> Result<u16, u64> {
+    Err(42u64)?;
+
+    Ok(())
+    //~^ ERROR: mismatched types [E0308]
+}
+
+fn main() {
+    || -> Result<u16, u64> {
+        if true {
+            return Err(42u64);
+        }
+        Ok(())
+        //~^ ERROR: mismatched types [E0308]
+    };
+}
diff --git a/src/test/ui/closures/issue-87461.stderr b/src/test/ui/closures/issue-87461.stderr
new file mode 100644
index 00000000000..a3cff2c1212
--- /dev/null
+++ b/src/test/ui/closures/issue-87461.stderr
@@ -0,0 +1,21 @@
+error[E0308]: mismatched types
+  --> $DIR/issue-87461.rs:10:8
+   |
+LL |     Ok(())
+   |        ^^ expected `u16`, found `()`
+
+error[E0308]: mismatched types
+  --> $DIR/issue-87461.rs:17:8
+   |
+LL |     Ok(())
+   |        ^^ expected `u16`, found `()`
+
+error[E0308]: mismatched types
+  --> $DIR/issue-87461.rs:26:12
+   |
+LL |         Ok(())
+   |            ^^ expected `u16`, found `()`
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0308`.