about summary refs log tree commit diff
path: root/tests/ui/array-slice-vec
diff options
context:
space:
mode:
author许杰友 Jieyou Xu (Joe) <39484203+jieyouxu@users.noreply.github.com>2025-08-19 19:42:06 +0800
committerGitHub <noreply@github.com>2025-08-19 19:42:06 +0800
commit2d058708975587e2ef189489e34b7c78efcfcc42 (patch)
treea1791a10870094d05bf5770519d8b875cca9932b /tests/ui/array-slice-vec
parent43f778908ddc22a562fc8e40b50959794de018e2 (diff)
parent75e0263af9ca27eac2c922538582deec764d1e7b (diff)
downloadrust-2d058708975587e2ef189489e34b7c78efcfcc42.tar.gz
rust-2d058708975587e2ef189489e34b7c78efcfcc42.zip
Rollup merge of #144983 - Oneirical:uncountable-integer, r=jieyouxu
Rehome 37 `tests/ui/issues/` tests to other subdirectories under `tests/ui/`

Part of rust-lang/rust#133895

Methodology:

1. Refer to the previously written `tests/ui/SUMMARY.md`
2. Find an appropriate category for the test, using the original issue thread and the test contents.
3. Add the issue URL at the bottom (not at the top, as that would mess up stderr line numbers)
4. Rename the tests to make their purpose clearer

Inspired by the methodology that ``@Kivooeo`` was using.

r? ``@jieyouxu``
Diffstat (limited to 'tests/ui/array-slice-vec')
-rw-r--r--tests/ui/array-slice-vec/matching-on-vector-slice-option-8498.rs28
-rw-r--r--tests/ui/array-slice-vec/pattern-matching-fixed-length-vectors-7784.rs31
2 files changed, 59 insertions, 0 deletions
diff --git a/tests/ui/array-slice-vec/matching-on-vector-slice-option-8498.rs b/tests/ui/array-slice-vec/matching-on-vector-slice-option-8498.rs
new file mode 100644
index 00000000000..e243a247ed5
--- /dev/null
+++ b/tests/ui/array-slice-vec/matching-on-vector-slice-option-8498.rs
@@ -0,0 +1,28 @@
+// https://github.com/rust-lang/rust/issues/8498
+//@ run-pass
+
+pub fn main() {
+    match &[(Box::new(5),Box::new(7))] {
+        ps => {
+           let (ref y, _) = ps[0];
+           assert_eq!(**y, 5);
+        }
+    }
+
+    match Some(&[(Box::new(5),)]) {
+        Some(ps) => {
+           let (ref y,) = ps[0];
+           assert_eq!(**y, 5);
+        }
+        None => ()
+    }
+
+    match Some(&[(Box::new(5),Box::new(7))]) {
+        Some(ps) => {
+           let (ref y, ref z) = ps[0];
+           assert_eq!(**y, 5);
+           assert_eq!(**z, 7);
+        }
+        None => ()
+    }
+}
diff --git a/tests/ui/array-slice-vec/pattern-matching-fixed-length-vectors-7784.rs b/tests/ui/array-slice-vec/pattern-matching-fixed-length-vectors-7784.rs
new file mode 100644
index 00000000000..7d987e92b63
--- /dev/null
+++ b/tests/ui/array-slice-vec/pattern-matching-fixed-length-vectors-7784.rs
@@ -0,0 +1,31 @@
+// https://github.com/rust-lang/rust/issues/7784
+//@ run-pass
+
+use std::ops::Add;
+
+fn foo<T: Add<Output=T> + Clone>([x, y, z]: [T; 3]) -> (T, T, T) {
+    (x.clone(), x.clone() + y.clone(), x + y + z)
+}
+fn bar(a: &'static str, b: &'static str) -> [&'static str; 4] {
+    [a, b, b, a]
+}
+
+fn main() {
+    assert_eq!(foo([1, 2, 3]), (1, 3, 6));
+
+    let [a, b, c, d] = bar("foo", "bar");
+    assert_eq!(a, "foo");
+    assert_eq!(b, "bar");
+    assert_eq!(c, "bar");
+    assert_eq!(d, "foo");
+
+    let [a, _, _, d] = bar("baz", "foo");
+    assert_eq!(a, "baz");
+    assert_eq!(d, "baz");
+
+    let out = bar("baz", "foo");
+    let [a, xs @ .., d] = out;
+    assert_eq!(a, "baz");
+    assert_eq!(xs, ["foo", "foo"]);
+    assert_eq!(d, "baz");
+}