about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2012-02-05 13:59:09 -0800
committerNiko Matsakis <niko@alum.mit.edu>2012-02-05 13:59:09 -0800
commit9f0239ce9c24972e8f50b4161130414965886348 (patch)
tree82b1a8b1754aa44205db379e7ede7c0b9d8b8c60
parentdd510313908dda405235ae769dfa94ed18f715ed (diff)
downloadrust-9f0239ce9c24972e8f50b4161130414965886348.tar.gz
rust-9f0239ce9c24972e8f50b4161130414965886348.zip
add a test where mode inference ought to fail
-rw-r--r--src/test/compile-fail/mode-inference-fail.rs11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/test/compile-fail/mode-inference-fail.rs b/src/test/compile-fail/mode-inference-fail.rs
new file mode 100644
index 00000000000..732c9a4311f
--- /dev/null
+++ b/src/test/compile-fail/mode-inference-fail.rs
@@ -0,0 +1,11 @@
+// In this test, the mode gets inferred to ++ due to the apply_int(),
+// but then we get a failure in the generic apply().
+
+fn apply<A>(f: fn(A) -> A, a: A) -> A { f(a) }
+fn apply_int(f: fn(int) -> int, a: int) -> int { f(a) }
+
+fn main() {
+    let f = {|i| i};
+    assert apply_int(f, 2) == 2;
+    assert apply(f, 2) == 2; //! ERROR expected argument mode ++
+}