summaryrefslogtreecommitdiffstats
path: root/src/test/ui/match/match-incompat-type-semi.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/match/match-incompat-type-semi.rs')
-rw-r--r--src/test/ui/match/match-incompat-type-semi.rs52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/test/ui/match/match-incompat-type-semi.rs b/src/test/ui/match/match-incompat-type-semi.rs
new file mode 100644
index 000000000..37f6beabd
--- /dev/null
+++ b/src/test/ui/match/match-incompat-type-semi.rs
@@ -0,0 +1,52 @@
+// Diagnostic enhancement explained in issue #75418.
+// Point at the last statement in the block if there's no tail expression,
+// and suggest removing the semicolon if appropriate.
+
+fn main() {
+ let _ = match Some(42) {
+ Some(x) => {
+ x
+ },
+ None => {
+ 0;
+ //~^ ERROR incompatible types
+ //~| HELP consider removing this semicolon
+ },
+ };
+
+ let _ = if let Some(x) = Some(42) {
+ x
+ } else {
+ 0;
+ //~^ ERROR incompatible types
+ //~| HELP consider removing this semicolon
+ };
+
+ let _ = match Some(42) {
+ Some(x) => {
+ x
+ },
+ None => {
+ ();
+ //~^ ERROR incompatible types
+ },
+ };
+
+ let _ = match Some(42) {
+ Some(x) => {
+ x
+ },
+ None => { //~ ERROR incompatible types
+ },
+ };
+
+ let _ = match Some(42) {
+ Some(x) => "rust-lang.org"
+ .chars()
+ .skip(1)
+ .chain(Some(x as u8 as char))
+ .take(10)
+ .any(char::is_alphanumeric),
+ None => {} //~ ERROR incompatible types
+ };
+}