about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2011-12-21 08:41:41 -0800
committerNiko Matsakis <niko@alum.mit.edu>2011-12-21 08:41:41 -0800
commit66856a39b38b1ded0200e57c713c39ecf3dcc192 (patch)
tree4ed2373ddef8389a08e437e8361b1288e689c762
parent627217fa55ec36d94016eddd4f4fa0dacc81634d (diff)
downloadrust-66856a39b38b1ded0200e57c713c39ecf3dcc192.tar.gz
rust-66856a39b38b1ded0200e57c713c39ecf3dcc192.zip
add tests I forgot to add
-rw-r--r--src/test/compile-fail/block-arg-used-as-lambda-with-illegal-cap.rs12
-rw-r--r--src/test/run-pass/block-arg-used-as-lambda.rs14
2 files changed, 26 insertions, 0 deletions
diff --git a/src/test/compile-fail/block-arg-used-as-lambda-with-illegal-cap.rs b/src/test/compile-fail/block-arg-used-as-lambda-with-illegal-cap.rs
new file mode 100644
index 00000000000..d5a0042d107
--- /dev/null
+++ b/src/test/compile-fail/block-arg-used-as-lambda-with-illegal-cap.rs
@@ -0,0 +1,12 @@
+// error-pattern: copying a noncopyable value
+
+fn to_lambda1(f: lambda(uint) -> uint) -> lambda(uint) -> uint {
+    ret f;
+}
+
+fn to_lambda2(b: block(uint) -> uint) -> lambda(uint) -> uint {
+    ret to_lambda1({|x| b(x)});
+}
+
+fn main() {
+}
diff --git a/src/test/run-pass/block-arg-used-as-lambda.rs b/src/test/run-pass/block-arg-used-as-lambda.rs
new file mode 100644
index 00000000000..6780e3692f5
--- /dev/null
+++ b/src/test/run-pass/block-arg-used-as-lambda.rs
@@ -0,0 +1,14 @@
+fn to_lambda(f: lambda(uint) -> uint) -> lambda(uint) -> uint {
+    ret f;
+}
+
+fn main() {
+    let x: lambda(uint) -> uint = to_lambda({ |x| x * 2u });
+    let y = to_lambda(x);
+
+    let x_r = x(22u);
+    let y_r = y(x_r);
+
+    assert x_r == 44u;
+    assert y_r == 88u;
+}