about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2011-12-15 18:44:13 -0800
committerNiko Matsakis <niko@alum.mit.edu>2011-12-16 08:06:45 -0800
commit34283c6a7863d5d69641f5c39422db70fe6c862a (patch)
tree48cbf83b6a7f711274edc3ecc679c9fc2d0f1fd3
parent4465c1ad022740eb9204f3111396be6b16351632 (diff)
downloadrust-34283c6a7863d5d69641f5c39422db70fe6c862a.tar.gz
rust-34283c6a7863d5d69641f5c39422db70fe6c862a.zip
add test that requires capturing generic descriptors
-rw-r--r--src/test/run-pass/sendfn-generic-fn.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/test/run-pass/sendfn-generic-fn.rs b/src/test/run-pass/sendfn-generic-fn.rs
new file mode 100644
index 00000000000..d6a63d5cfe4
--- /dev/null
+++ b/src/test/run-pass/sendfn-generic-fn.rs
@@ -0,0 +1,36 @@
+use std;
+
+import std::comm;
+import std::comm::chan;
+import std::comm::send;
+
+fn main() { test05(); }
+
+type pair<A,B> = { a: A, b: B };
+
+fn make_generic_record<copy A,copy B>(a: A, b: B) -> pair<A,B> {
+    ret {a: a, b: b};
+}
+
+fn test05_start(&&f: sendfn(&&float, &&str) -> pair<float, str>) {
+    let p = f(22.22f, "Hi");
+    log p;
+    assert p.a == 22.22f;
+    assert p.b == "Hi";
+
+    let q = f(44.44f, "Ho");
+    log q;
+    assert q.a == 44.44f;
+    assert q.b == "Ho";
+}
+
+fn spawn<copy A, copy B>(f: fn(sendfn(A,B)->pair<A,B>)) {
+    let arg = sendfn(a: A, b: B) -> pair<A,B> {
+        ret make_generic_record(a, b);
+    };
+    task::spawn(arg, f);
+}
+
+fn test05() {
+    spawn::<float,str>(test05_start);
+}