From 562c64d86aeea35890841d1c09a731ff13815f95 Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Thu, 15 Sep 2016 16:32:30 +0200 Subject: [PATCH] add some sanity tests --- tests/run-pass/function_pointers.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/run-pass/function_pointers.rs b/tests/run-pass/function_pointers.rs index 2e75a5a3ea2a..e7368004069f 100644 --- a/tests/run-pass/function_pointers.rs +++ b/tests/run-pass/function_pointers.rs @@ -2,6 +2,10 @@ fn f() -> i32 { 42 } +fn g(i: i32) -> i32 { + i*42 +} + fn return_fn_ptr() -> fn() -> i32 { f } @@ -10,8 +14,22 @@ fn call_fn_ptr() -> i32 { return_fn_ptr()() } +fn indirect i32>(f: F) -> i32 { f() } +fn indirect_mut i32>(mut f: F) -> i32 { f() } +fn indirect_once i32>(f: F) -> i32 { f() } + +fn indirect2 i32>(f: F) -> i32 { f(10) } +fn indirect_mut2 i32>(mut f: F) -> i32 { f(10) } +fn indirect_once2 i32>(f: F) -> i32 { f(10) } + fn main() { assert_eq!(call_fn_ptr(), 42); + assert_eq!(indirect(f), 42); + assert_eq!(indirect_mut(f), 42); + assert_eq!(indirect_once(f), 42); + assert_eq!(indirect2(g), 420); + assert_eq!(indirect_mut2(g), 420); + assert_eq!(indirect_once2(g), 420); assert!(return_fn_ptr() == f); assert!(return_fn_ptr() as unsafe fn() -> i32 == f as fn() -> i32 as unsafe fn() -> i32); }