about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/test/run-pass/box-in-tup.rs4
-rw-r--r--src/test/run-pass/generic-tup.rs10
-rw-r--r--src/test/run-pass/rec-tup.rs33
-rw-r--r--src/test/run-pass/tup.rs18
4 files changed, 65 insertions, 0 deletions
diff --git a/src/test/run-pass/box-in-tup.rs b/src/test/run-pass/box-in-tup.rs
new file mode 100644
index 00000000000..aa2d6a596e1
--- /dev/null
+++ b/src/test/run-pass/box-in-tup.rs
@@ -0,0 +1,4 @@
+fn main() {
+    let i: (@int, int) = (@10, 10);
+    let (a, _) = i;
+}
\ No newline at end of file
diff --git a/src/test/run-pass/generic-tup.rs b/src/test/run-pass/generic-tup.rs
new file mode 100644
index 00000000000..3e15a37bcb8
--- /dev/null
+++ b/src/test/run-pass/generic-tup.rs
@@ -0,0 +1,10 @@
+fn get_third[T](t: &(T, T, T)) -> T {
+    let (_, _, x) = t;
+    ret x;
+}
+
+fn main() {
+    log get_third((1, 2, 3));
+    assert (get_third((1, 2, 3)) == 3);
+    assert (get_third((5u8, 6u8, 7u8)) == 7u8);
+}
\ No newline at end of file
diff --git a/src/test/run-pass/rec-tup.rs b/src/test/run-pass/rec-tup.rs
new file mode 100644
index 00000000000..e1656bf17b8
--- /dev/null
+++ b/src/test/run-pass/rec-tup.rs
@@ -0,0 +1,33 @@
+// -*- rust -*-
+type point = {x: int, y: int};
+
+type rect = (point, point);
+
+fn fst(r: &rect) -> point {
+    let (fst, _) = r;
+    ret fst;
+}
+fn snd(r: &rect) -> point {
+    let (_, snd) = r;
+    ret snd;
+}
+
+fn f(r: rect, x1: int, y1: int, x2: int, y2: int) {
+    assert (fst(r).x == x1);
+    assert (fst(r).y == y1);
+    assert (snd(r).x == x2);
+    assert (snd(r).y == y2);
+}
+
+fn main() {
+    let r: rect = ({x: 10, y: 20}, {x: 11, y: 22});
+    assert (fst(r).x == 10);
+    assert (fst(r).y == 20);
+    assert (snd(r).x == 11);
+    assert (snd(r).y == 22);
+    let r2 = r;
+    let x: int = fst(r2).x;
+    assert (x == 10);
+    f(r, 10, 20, 11, 22);
+    f(r2, 10, 20, 11, 22);
+}
diff --git a/src/test/run-pass/tup.rs b/src/test/run-pass/tup.rs
new file mode 100644
index 00000000000..ab34e75a460
--- /dev/null
+++ b/src/test/run-pass/tup.rs
@@ -0,0 +1,18 @@
+// -*- rust -*-
+type point = (int, int);
+
+fn f(p: point, x: int, y: int) {
+    let (a, b) = p;
+    assert (a == x);
+    assert (b == y);
+}
+
+fn main() {
+    let p: point = (10, 20);
+    let (a, b) = p;
+    assert (a == 10);
+    assert (b == 20);
+    let p2: point = p;
+    f(p, 10, 20);
+    f(p2, 10, 20);
+}
\ No newline at end of file