diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/sendfn-is-not-a-lambda.rs | 6 | ||||
| -rw-r--r-- | src/test/pretty/cap-clause.rs | 6 | ||||
| -rw-r--r-- | src/test/run-fail/unwind-lambda.rs | 5 | ||||
| -rw-r--r-- | src/test/run-pass/lambda-no-leak.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/uniq-fn-leak.rs | 23 |
5 files changed, 33 insertions, 11 deletions
diff --git a/src/test/compile-fail/sendfn-is-not-a-lambda.rs b/src/test/compile-fail/sendfn-is-not-a-lambda.rs index 1be97b94654..ca8701c692e 100644 --- a/src/test/compile-fail/sendfn-is-not-a-lambda.rs +++ b/src/test/compile-fail/sendfn-is-not-a-lambda.rs @@ -1,10 +1,8 @@ -// error-pattern: mismatched types: expected `fn@(++uint) -> uint` - fn test(f: fn@(uint) -> uint) -> uint { ret f(22u); } fn main() { - let f = sendfn(x: uint) -> uint { ret 4u; }; - log(debug, test(f)); + let f = fn~(x: uint) -> uint { ret 4u; }; + log(debug, test(f)); //! ERROR expected `fn@(++uint) -> uint` } diff --git a/src/test/pretty/cap-clause.rs b/src/test/pretty/cap-clause.rs index eeaa7853c3e..e6a78c3d762 100644 --- a/src/test/pretty/cap-clause.rs +++ b/src/test/pretty/cap-clause.rs @@ -11,7 +11,7 @@ fn main() { let x = 1; let y = 2; let z = 3; - let s1 = sendfn[copy x]() -> int { x + y }; - let s2 = sendfn[copy x; move y]() -> int { x + y }; - let s3 = sendfn[move z]() -> int { z }; + let s1 = fn~[copy x]() -> int { x + y }; + let s2 = fn~[copy x; move y]() -> int { x + y }; + let s3 = fn~[move z]() -> int { z }; } diff --git a/src/test/run-fail/unwind-lambda.rs b/src/test/run-fail/unwind-lambda.rs index b9dcabcabbf..f70e6bf727c 100644 --- a/src/test/run-fail/unwind-lambda.rs +++ b/src/test/run-fail/unwind-lambda.rs @@ -8,9 +8,10 @@ fn main() { macerate(*tasties); } (carrots, { |food| let mush = food + cheese; - let _ = fn@() { + let f = fn@() { let chew = mush + cheese; fail "so yummy" - } (); + }; + f(); }); } \ No newline at end of file diff --git a/src/test/run-pass/lambda-no-leak.rs b/src/test/run-pass/lambda-no-leak.rs index 171650a4268..9ef41f5bc60 100644 --- a/src/test/run-pass/lambda-no-leak.rs +++ b/src/test/run-pass/lambda-no-leak.rs @@ -2,6 +2,6 @@ fn force(f: fn@()) { f() } fn main() { let x = 7; - let _ = fn@ () { log(error, x); }; - force(fn@ () { log(error, x); }); + let _f = fn@() { log(error, x); }; + force(fn@() { log(error, x); }); } diff --git a/src/test/run-pass/uniq-fn-leak.rs b/src/test/run-pass/uniq-fn-leak.rs new file mode 100644 index 00000000000..7c9a6e7aca5 --- /dev/null +++ b/src/test/run-pass/uniq-fn-leak.rs @@ -0,0 +1,23 @@ +// xfail-test + tag maybe_pointy { + none; + p(@pointy); + } + + type pointy = { + mutable a : maybe_pointy, + d : sendfn()->(), + }; + + fn empty_pointy() -> @pointy { + ret @{ + mutable a : none, + d : sendfn()->(){}, + } + } + + fn main() + { + let v = empty_pointy(); + v.a = p(v); + } |
