]> git.lizzy.rs Git - rust.git/commitdiff
Add more tests
authorJakub Wieczorek <jakubw@jakubw.net>
Sat, 15 Dec 2012 23:13:55 +0000 (23:13 +0000)
committerGraydon Hoare <graydon@mozilla.com>
Tue, 18 Dec 2012 00:50:40 +0000 (16:50 -0800)
src/test/compile-fail/alt-vec-illegal-tail-element-loan.rs [new file with mode: 0644]
src/test/compile-fail/alt-vec-tail-move.rs [new file with mode: 0644]
src/test/run-pass/vec-matching-autoslice.rs [new file with mode: 0644]
src/test/run-pass/vec-matching-legal-tail-element-borrow.rs [new file with mode: 0644]

diff --git a/src/test/compile-fail/alt-vec-illegal-tail-element-loan.rs b/src/test/compile-fail/alt-vec-illegal-tail-element-loan.rs
new file mode 100644 (file)
index 0000000..70c7c33
--- /dev/null
@@ -0,0 +1,13 @@
+fn a() -> &int {
+    let vec = [1, 2, 3, 4];
+    let tail = match vec {
+        [a, ..tail] => &tail[0], //~ ERROR illegal borrow
+        _ => fail ~"foo"
+    };
+    move tail
+}
+
+fn main() {
+    let fifth = a();
+    io::println(fmt!("%d", *fifth));
+}
diff --git a/src/test/compile-fail/alt-vec-tail-move.rs b/src/test/compile-fail/alt-vec-tail-move.rs
new file mode 100644 (file)
index 0000000..fc7d663
--- /dev/null
@@ -0,0 +1,8 @@
+fn main() {
+    let a = [mut 1, 2, 3, 4];
+    let _ = match a {
+        [1, 2, ..move tail] => tail,
+        _ => core::util::unreachable()
+    };
+    a[0] = 0; //~ ERROR: use of moved variable
+}
diff --git a/src/test/run-pass/vec-matching-autoslice.rs b/src/test/run-pass/vec-matching-autoslice.rs
new file mode 100644 (file)
index 0000000..badb024
--- /dev/null
@@ -0,0 +1,22 @@
+fn main() {
+    let x = @[1, 2, 3];
+    match x {
+        [2, .._] => core::util::unreachable(),
+        [1, ..tail] => {
+            assert tail == [2, 3];
+        }
+        [_] => core::util::unreachable(),
+        [] => core::util::unreachable()
+    }
+
+    let y = (~[(1, true), (2, false)], 0.5);
+    match y {
+        ([_, _, _], 0.5) => core::util::unreachable(),
+        ([(1, a), (b, false), ..tail], _) => {
+            assert a == true;
+            assert b == 2;
+            assert tail.is_empty();
+        }
+        ([..tail], _) => core::util::unreachable()
+    }
+}
diff --git a/src/test/run-pass/vec-matching-legal-tail-element-borrow.rs b/src/test/run-pass/vec-matching-legal-tail-element-borrow.rs
new file mode 100644 (file)
index 0000000..ea21408
--- /dev/null
@@ -0,0 +1,10 @@
+fn main() {
+    let x = &[1, 2, 3, 4, 5];
+    if !x.is_empty() {
+        let el = match x {
+            [1, ..ref tail] => &tail[0], 
+            _ => core::util::unreachable()
+        };
+        io::println(fmt!("%d", *el));
+    }
+}