Skip to content

Commit 768247f

Browse files
committed
Tests for #1896
1 parent b269ac1 commit 768247f

File tree

4 files changed

+48
-0
lines changed

4 files changed

+48
-0
lines changed

src/test/compile-fail/issue-1896.rs

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
type t<T> = { f: fn() -> T };
2+
3+
fn f<T>(_x: t<T>) {}
4+
5+
fn main() {
6+
let x: t<()> = { f: { || () } };
7+
f(x); //~ ERROR copying a noncopyable value
8+
}

src/test/run-pass/issue-1896-1.rs

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
type boxedFn = { theFn: fn () -> uint };
2+
3+
fn createClosure (closedUint: uint) -> boxedFn {
4+
{ theFn: fn@ () -> uint { closedUint } }
5+
}
6+
7+
fn main () {
8+
let aFn: boxedFn = createClosure(10);
9+
10+
let myInt: uint = aFn.theFn();
11+
12+
assert myInt == 10;
13+
}

src/test/run-pass/issue-1896-2.rs

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
fn add(n: int) -> fn@(int) -> int {
2+
fn@(m: int) -> int { m + n }
3+
}
4+
5+
fn main()
6+
{
7+
assert add(3)(4) == 7;
8+
let add3 : fn(int)->int = add(3);
9+
assert add3(4) == 7;
10+
}

src/test/run-pass/issue-1896-3.rs

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
fn add(n: int) -> fn@(int) -> int {
2+
fn@(m: int) -> int { m + n }
3+
}
4+
5+
fn main()
6+
{
7+
assert add(3)(4) == 7;
8+
9+
let add1 : fn@(int)->int = add(1);
10+
assert add1(6) == 7;
11+
12+
let add2 : &(fn@(int)->int) = &add(2);
13+
assert (*add2)(5) == 7;
14+
15+
let add3 : fn(int)->int = add(3);
16+
assert add3(4) == 7;
17+
}

0 commit comments

Comments
 (0)