summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-05-30 11:56:50 -0700
committerNiko Matsakis <niko@alum.mit.edu>2012-05-30 11:56:50 -0700
commit5b8abec92f6099fe0603d321a0fb5847bf283cbd (patch)
tree4ff1eb4d31c00cbb550346477cdf34bcd154f15a /src/test
parent6dc4bc517ad0283aa28c72a3f15d3b5611882987 (diff)
downloadrust-5b8abec92f6099fe0603d321a0fb5847bf283cbd.tar.gz
rust-5b8abec92f6099fe0603d321a0fb5847bf283cbd.zip
test for pure fn vs impure fn etc subtyping
Diffstat (limited to 'src/test')
-rw-r--r--src/test/compile-fail/pure-subtyping.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/test/compile-fail/pure-subtyping.rs b/src/test/compile-fail/pure-subtyping.rs
new file mode 100644
index 00000000000..192c83d5e44
--- /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