From dca11e1f99bcb3b1e645625113d188c8b1b43f8d Mon Sep 17 00:00:00 2001 From: Niko Matsakis Date: Wed, 30 May 2012 11:59:05 -0700 Subject: [PATCH] test our some of the various combinations of fn subtyping --- src/test/compile-fail/pure-subtyping.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/test/compile-fail/pure-subtyping.rs b/src/test/compile-fail/pure-subtyping.rs index 192c83d5e44..da0cab02e6b 100644 --- a/src/test/compile-fail/pure-subtyping.rs +++ b/src/test/compile-fail/pure-subtyping.rs @@ -18,5 +18,19 @@ fn assign_to_unsafe(x: pure fn(), y: fn(), z: unsafe fn()) { let o: unsafe fn() = z; } +fn assign_to_pure2(x: pure fn@(), y: fn@(), z: unsafe fn@()) { + let a: pure fn() = x; + let b: pure fn() = y; //! ERROR expected pure fn but found impure fn + let c: pure fn() = z; //! ERROR expected pure fn but found unsafe fn + + let a: pure fn~() = x; //! ERROR closure protocol mismatch (fn~ vs fn@) + let b: pure fn~() = y; //! ERROR closure protocol mismatch (fn~ vs fn@) + let c: pure fn~() = z; //! ERROR closure protocol mismatch (fn~ vs fn@) + + let a: unsafe fn~() = x; //! ERROR closure protocol mismatch (fn~ vs fn@) + let b: unsafe fn~() = y; //! ERROR closure protocol mismatch (fn~ vs fn@) + let c: unsafe fn~() = z; //! ERROR closure protocol mismatch (fn~ vs fn@) +} + fn main() { } \ No newline at end of file