summaryrefslogtreecommitdiffstats
path: root/src/test/ui/suggestions/match-prev-arm-needing-semi.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/suggestions/match-prev-arm-needing-semi.rs')
-rw-r--r--src/test/ui/suggestions/match-prev-arm-needing-semi.rs66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/test/ui/suggestions/match-prev-arm-needing-semi.rs b/src/test/ui/suggestions/match-prev-arm-needing-semi.rs
new file mode 100644
index 000000000..8c8abe047
--- /dev/null
+++ b/src/test/ui/suggestions/match-prev-arm-needing-semi.rs
@@ -0,0 +1,66 @@
+// edition:2018
+
+fn dummy() -> i32 { 42 }
+
+fn extra_semicolon() {
+ let _ = match true { //~ NOTE `match` arms have incompatible types
+ true => {
+ dummy(); //~ NOTE this is found to be
+ //~^ HELP consider removing this semicolon
+ }
+ false => dummy(), //~ ERROR `match` arms have incompatible types
+ //~^ NOTE expected `()`, found `i32`
+ };
+}
+
+async fn async_dummy() {} //~ NOTE checked the `Output` of this `async fn`, found opaque type
+//~| NOTE while checking the return type of the `async fn`
+//~| NOTE in this expansion of desugaring of `async` block or function
+//~| NOTE checked the `Output` of this `async fn`, expected opaque type
+//~| NOTE while checking the return type of the `async fn`
+//~| NOTE in this expansion of desugaring of `async` block or function
+async fn async_dummy2() {} //~ NOTE checked the `Output` of this `async fn`, found opaque type
+//~| NOTE checked the `Output` of this `async fn`, found opaque type
+//~| NOTE while checking the return type of the `async fn`
+//~| NOTE in this expansion of desugaring of `async` block or function
+//~| NOTE while checking the return type of the `async fn`
+//~| NOTE in this expansion of desugaring of `async` block or function
+
+async fn async_extra_semicolon_same() {
+ let _ = match true { //~ NOTE `match` arms have incompatible types
+ true => {
+ async_dummy(); //~ NOTE this is found to be
+ //~^ HELP consider removing this semicolon
+ }
+ false => async_dummy(), //~ ERROR `match` arms have incompatible types
+ //~^ NOTE expected `()`, found opaque type
+ //~| NOTE expected unit type `()`
+ //~| HELP consider `await`ing on the `Future`
+ };
+}
+
+async fn async_extra_semicolon_different() {
+ let _ = match true { //~ NOTE `match` arms have incompatible types
+ true => {
+ async_dummy(); //~ NOTE this is found to be
+ //~^ HELP consider removing this semicolon
+ }
+ false => async_dummy2(), //~ ERROR `match` arms have incompatible types
+ //~^ NOTE expected `()`, found opaque type
+ //~| NOTE expected unit type `()`
+ //~| HELP consider `await`ing on the `Future`
+ };
+}
+
+async fn async_different_futures() {
+ let _ = match true { //~ NOTE `match` arms have incompatible types
+ true => async_dummy(), //~ NOTE this is found to be
+ //~| HELP consider `await`ing on both `Future`s
+ false => async_dummy2(), //~ ERROR `match` arms have incompatible types
+ //~^ NOTE expected opaque type, found a different opaque type
+ //~| NOTE expected opaque type `impl Future<Output = ()>`
+ //~| NOTE distinct uses of `impl Trait` result in different opaque types
+ };
+}
+
+fn main() {}