diff --git a/src/test/compile-fail/pure-subtyping.rs b/src/test/compile-fail/pure-subtyping.rs new file mode 100644 index 000000000000..192c83d5e449 --- /dev/null +++ b/src/test/compile-fail/pure-subtyping.rs @@ -0,0 +1,22 @@ +// Test rules governing higher-order pure fns. + +fn assign_to_pure(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 +} + +fn assign_to_impure(x: pure fn(), y: fn(), z: unsafe fn()) { + let h: fn() = x; + let i: fn() = y; + let j: fn() = z; //! ERROR expected impure fn but found unsafe fn +} + +fn assign_to_unsafe(x: pure fn(), y: fn(), z: unsafe fn()) { + let m: unsafe fn() = x; + let n: unsafe fn() = y; + let o: unsafe fn() = z; +} + +fn main() { +} \ No newline at end of file