From 7340824cbcce104458d87200119b62dbfe0ef07a Mon Sep 17 00:00:00 2001 From: Michael Sullivan Date: Mon, 11 Jul 2011 13:12:44 -0500 Subject: Fix autoderef of function calls when the function is not an lval. As it turns out, the correct way to handle this is much simpler than what I did originally. Also add more tests. --- src/test/run-pass/auto-deref-fn.rs | 1 + src/test/run-pass/call-autoderef-tag.rs | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 src/test/run-pass/call-autoderef-tag.rs (limited to 'src/test') diff --git a/src/test/run-pass/auto-deref-fn.rs b/src/test/run-pass/auto-deref-fn.rs index 6959e8e109f..8637c7d03d6 100644 --- a/src/test/run-pass/auto-deref-fn.rs +++ b/src/test/run-pass/auto-deref-fn.rs @@ -8,4 +8,5 @@ fn main() { assert(f(5) == 6); assert(g(8) == 9); assert(h(0x1badd00d) == 0x1badd00e); + assert((@add1)(42) == 43); } diff --git a/src/test/run-pass/call-autoderef-tag.rs b/src/test/run-pass/call-autoderef-tag.rs new file mode 100644 index 00000000000..3826b9a409c --- /dev/null +++ b/src/test/run-pass/call-autoderef-tag.rs @@ -0,0 +1,11 @@ +// xfail-stage0 +tag int_fn { f(fn(int) -> int); } +tag int_box_fn { fb(@fn(int) -> int); } +fn add1(int i) -> int { ret i+1; } +fn main() { + auto g = f(add1); + assert(g(4) == 5); + assert((f(add1))(5) == 6); + assert((@(f(add1)))(5) == 6); + assert((fb(@add1))(7) == 8); +} -- cgit 1.4.1-3-g733a5