diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2011-12-15 18:44:13 -0800 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2011-12-16 08:06:45 -0800 |
| commit | 34283c6a7863d5d69641f5c39422db70fe6c862a (patch) | |
| tree | 48cbf83b6a7f711274edc3ecc679c9fc2d0f1fd3 | |
| parent | 4465c1ad022740eb9204f3111396be6b16351632 (diff) | |
| download | rust-34283c6a7863d5d69641f5c39422db70fe6c862a.tar.gz rust-34283c6a7863d5d69641f5c39422db70fe6c862a.zip | |
add test that requires capturing generic descriptors
| -rw-r--r-- | src/test/run-pass/sendfn-generic-fn.rs | 36 |
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); +} |
