Skip to content

Commit dca11e1

Browse files
committed
test our some of the various combinations of fn subtyping
1 parent 5b8abec commit dca11e1

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

src/test/compile-fail/pure-subtyping.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,19 @@ fn assign_to_unsafe(x: pure fn(), y: fn(), z: unsafe fn()) {
1818
let o: unsafe fn() = z;
1919
}
2020

21+
fn assign_to_pure2(x: pure fn@(), y: fn@(), z: unsafe fn@()) {
22+
let a: pure fn() = x;
23+
let b: pure fn() = y; //! ERROR expected pure fn but found impure fn
24+
let c: pure fn() = z; //! ERROR expected pure fn but found unsafe fn
25+
26+
let a: pure fn~() = x; //! ERROR closure protocol mismatch (fn~ vs fn@)
27+
let b: pure fn~() = y; //! ERROR closure protocol mismatch (fn~ vs fn@)
28+
let c: pure fn~() = z; //! ERROR closure protocol mismatch (fn~ vs fn@)
29+
30+
let a: unsafe fn~() = x; //! ERROR closure protocol mismatch (fn~ vs fn@)
31+
let b: unsafe fn~() = y; //! ERROR closure protocol mismatch (fn~ vs fn@)
32+
let c: unsafe fn~() = z; //! ERROR closure protocol mismatch (fn~ vs fn@)
33+
}
34+
2135
fn main() {
2236
}

0 commit comments

Comments
 (0)