about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorSeo Sanghyeon <sanxiyn@gmail.com>2013-03-11 19:53:41 +0900
committerSeo Sanghyeon <sanxiyn@gmail.com>2013-03-11 19:53:41 +0900
commit070137ce905d0177e8d112385f1d8dc7b2407006 (patch)
tree250354cf3cd8fe9af0de4e0d8434c99a50742c75 /src
parent9e85589ad3ba61169cd7722520981c1bebb5b542 (diff)
downloadrust-070137ce905d0177e8d112385f1d8dc7b2407006.tar.gz
rust-070137ce905d0177e8d112385f1d8dc7b2407006.zip
Add one more test for vector destructuring
Diffstat (limited to 'src')
-rw-r--r--src/test/run-pass/vec-matching.rs43
1 files changed, 42 insertions, 1 deletions
diff --git a/src/test/run-pass/vec-matching.rs b/src/test/run-pass/vec-matching.rs
index e1243e18f5f..1402dd18fc7 100644
--- a/src/test/run-pass/vec-matching.rs
+++ b/src/test/run-pass/vec-matching.rs
@@ -1,4 +1,4 @@
-pub fn main() {
+fn a() {
     let x = [1];
     match x {
         [_, _, _, _, _, .._] => ::core::util::unreachable(),
@@ -11,3 +11,44 @@ pub fn main() {
         [] => ::core::util::unreachable()
     }
 }
+
+fn b() {
+    let x = [1, 2, 3];
+    match x {
+        [a, b, ..c] => {
+            fail_unless!(a == 1);
+            fail_unless!(b == 2);
+            fail_unless!(c == &[3]);
+        }
+        _ => fail!()
+    }
+    match x {
+        [..a, b, c] => {
+            fail_unless!(a == &[1]);
+            fail_unless!(b == 2);
+            fail_unless!(c == 3);
+        }
+        _ => fail!()
+    }
+    match x {
+        [a, ..b, c] => {
+            fail_unless!(a == 1);
+            fail_unless!(b == &[2]);
+            fail_unless!(c == 3);
+        }
+        _ => fail!()
+    }
+    match x {
+        [a, b, c] => {
+            fail_unless!(a == 1);
+            fail_unless!(b == 2);
+            fail_unless!(c == 3);
+        }
+        _ => fail!()
+    }
+}
+
+pub fn main() {
+    a();
+    b();
+}