about summary refs log tree commit diff
diff options
context:
space:
mode:
authorKarol Zwolak <karolzwolak7@gmail.com>2025-10-01 22:40:23 +0200
committerKarol Zwolak <karolzwolak7@gmail.com>2025-10-01 23:03:18 +0200
commit934ad740270944800d03f6290bcc131a8697e59f (patch)
tree5b3ec8d703ce38b3698ada5b47ffa1d45207f32f
parenta08228d284a91e5b2514035b723e82deb9179985 (diff)
downloadrust-934ad740270944800d03f6290bcc131a8697e59f.tar.gz
rust-934ad740270944800d03f6290bcc131a8697e59f.zip
regression test
-rw-r--r--tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.fixed18
-rw-r--r--tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.rs18
-rw-r--r--tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.stderr18
3 files changed, 54 insertions, 0 deletions
diff --git a/tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.fixed b/tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.fixed
new file mode 100644
index 00000000000..5abc1edd381
--- /dev/null
+++ b/tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.fixed
@@ -0,0 +1,18 @@
+//@ run-rustfix
+
+// Regression test for issue #143330.
+// Ensure we suggest to replace only the intended bar with a comma, not all bars in the pattern.
+
+fn main() {
+    struct Foo { x: i32, ch: char }
+    let pos = Foo { x: 2, ch: 'x' };
+    match pos {
+        // All commas here were replaced with bars.
+        // Foo { x: 2 | ch: ' |' } | Foo { x: 3 | ch: '@' } => (),
+        (Foo { x: 2, ch: ',' } | Foo { x: 3, ch: '@' }) => (),
+        //~^ ERROR unexpected `,` in pattern
+        //~| HELP try adding parentheses to match on a tuple...
+        //~| HELP ...or a vertical bar to match on alternative
+        _ => todo!(),
+    }
+}
diff --git a/tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.rs b/tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.rs
new file mode 100644
index 00000000000..5bd267c3bc4
--- /dev/null
+++ b/tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.rs
@@ -0,0 +1,18 @@
+//@ run-rustfix
+
+// Regression test for issue #143330.
+// Ensure we suggest to replace only the intended bar with a comma, not all bars in the pattern.
+
+fn main() {
+    struct Foo { x: i32, ch: char }
+    let pos = Foo { x: 2, ch: 'x' };
+    match pos {
+        // All commas here were replaced with bars.
+        // Foo { x: 2 | ch: ' |' } | Foo { x: 3 | ch: '@' } => (),
+        Foo { x: 2, ch: ',' }, Foo { x: 3, ch: '@' } => (),
+        //~^ ERROR unexpected `,` in pattern
+        //~| HELP try adding parentheses to match on a tuple...
+        //~| HELP ...or a vertical bar to match on alternative
+        _ => todo!(),
+    }
+}
diff --git a/tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.stderr b/tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.stderr
new file mode 100644
index 00000000000..db0bb8c50e8
--- /dev/null
+++ b/tests/ui/suggestions/only-replace-intended-bar-not-all-in-pattern.stderr
@@ -0,0 +1,18 @@
+error: unexpected `,` in pattern
+  --> $DIR/only-replace-intended-bar-not-all-in-pattern.rs:12:30
+   |
+LL |         Foo { x: 2, ch: ',' }, Foo { x: 3, ch: '@' } => (),
+   |                              ^
+   |
+help: try adding parentheses to match on a tuple...
+   |
+LL |         (Foo { x: 2, ch: ',' }, Foo { x: 3, ch: '@' }) => (),
+   |         +                                            +
+help: ...or a vertical bar to match on alternative
+   |
+LL -         Foo { x: 2, ch: ',' }, Foo { x: 3, ch: '@' } => (),
+LL +         Foo { x: 2, ch: ',' } | Foo { x: 3, ch: '@' } => (),
+   |
+
+error: aborting due to 1 previous error
+