From 66856a39b38b1ded0200e57c713c39ecf3dcc192 Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Wed, 21 Dec 2011 08:41:41 -0800 Subject: [PATCH] add tests I forgot to add --- .../block-arg-used-as-lambda-with-illegal-cap.rs | 12 ++++++++++++ src/test/run-pass/block-arg-used-as-lambda.rs | 14 ++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/test/compile-fail/block-arg-used-as-lambda-with-illegal-cap.rs create mode 100644 src/test/run-pass/block-arg-used-as-lambda.rs 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 000000000000..d5a0042d107a --- /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 000000000000..6780e3692f59 --- /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; +}