From c748323eb39ea10d63368a37a4f72260b9703702 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Thu, 30 May 2019 11:01:22 +0200 Subject: [PATCH] move fn_item/ptr tests to closures file --- tests/run-pass/closures.rs | 52 +++++++++++++++++++ .../fn_item_as_closure_trait_object.rs | 6 --- ..._item_with_args_as_closure_trait_object.rs | 8 --- ...h_multiple_args_as_closure_trait_object.rs | 18 ------- .../fn_ptr_as_closure_trait_object.rs | 15 ------ 5 files changed, 52 insertions(+), 47 deletions(-) delete mode 100644 tests/run-pass/fn_item_as_closure_trait_object.rs delete mode 100644 tests/run-pass/fn_item_with_args_as_closure_trait_object.rs delete mode 100644 tests/run-pass/fn_item_with_multiple_args_as_closure_trait_object.rs delete mode 100644 tests/run-pass/fn_ptr_as_closure_trait_object.rs diff --git a/tests/run-pass/closures.rs b/tests/run-pass/closures.rs index 141e6cd6d08a..eb8d8f0d5b98 100644 --- a/tests/run-pass/closures.rs +++ b/tests/run-pass/closures.rs @@ -44,10 +44,62 @@ fn boxed(f: Box i32>) -> i32 { f() } +fn fn_item_as_closure_trait_object() { + fn foo() {} + let f: &dyn Fn() = &foo; + f(); +} + +fn fn_item_with_args_as_closure_trait_object() { + fn foo(i: i32) { + assert_eq!(i, 42); + } + let f: &dyn Fn(i32) = &foo; + f(42); +} + +fn fn_item_with_multiple_args_as_closure_trait_object() { + fn foo(i: i32, j: i32) { + assert_eq!(i, 42); + assert_eq!(j, 55); + } + + fn bar(i: i32, j: i32, k: f32) { + assert_eq!(i, 42); + assert_eq!(j, 55); + assert_eq!(k, 3.14159) + } + let f: &dyn Fn(i32, i32) = &foo; + f(42, 55); + let f: &dyn Fn(i32, i32, f32) = &bar; + f(42, 55, 3.14159); +} + +fn fn_ptr_as_closure_trait_object() { + fn foo() {} + fn bar(u: u32) { assert_eq!(u, 42); } + fn baa(u: u32, f: f32) { + assert_eq!(u, 42); + assert_eq!(f, 3.141); + } + let f: &dyn Fn() = &(foo as fn()); + f(); + let f: &dyn Fn(u32) = &(bar as fn(u32)); + f(42); + let f: &dyn Fn(u32, f32) = &(baa as fn(u32, f32)); + f(42, 3.141); +} + + fn main() { assert_eq!(simple(), 12); assert_eq!(crazy_closure(), (84, 10, 10)); assert_eq!(closure_arg_adjustment_problem(), 3); assert_eq!(fn_once_closure_with_multiple_args(), 6); assert_eq!(boxed(Box::new({let x = 13; move || x})), 13); + + fn_item_as_closure_trait_object(); + fn_item_with_args_as_closure_trait_object(); + fn_item_with_multiple_args_as_closure_trait_object(); + fn_ptr_as_closure_trait_object(); } diff --git a/tests/run-pass/fn_item_as_closure_trait_object.rs b/tests/run-pass/fn_item_as_closure_trait_object.rs deleted file mode 100644 index dcbbb5cb6a2c..000000000000 --- a/tests/run-pass/fn_item_as_closure_trait_object.rs +++ /dev/null @@ -1,6 +0,0 @@ -fn foo() {} - -fn main() { - let f: &dyn Fn() = &foo; - f(); -} diff --git a/tests/run-pass/fn_item_with_args_as_closure_trait_object.rs b/tests/run-pass/fn_item_with_args_as_closure_trait_object.rs deleted file mode 100644 index 257028c4f0d8..000000000000 --- a/tests/run-pass/fn_item_with_args_as_closure_trait_object.rs +++ /dev/null @@ -1,8 +0,0 @@ -fn foo(i: i32) { - assert_eq!(i, 42); -} - -fn main() { - let f: &dyn Fn(i32) = &foo; - f(42); -} diff --git a/tests/run-pass/fn_item_with_multiple_args_as_closure_trait_object.rs b/tests/run-pass/fn_item_with_multiple_args_as_closure_trait_object.rs deleted file mode 100644 index 98111f304c89..000000000000 --- a/tests/run-pass/fn_item_with_multiple_args_as_closure_trait_object.rs +++ /dev/null @@ -1,18 +0,0 @@ -fn foo(i: i32, j: i32) { - assert_eq!(i, 42); - assert_eq!(j, 55); -} - -fn bar(i: i32, j: i32, k: f32) { - assert_eq!(i, 42); - assert_eq!(j, 55); - assert_eq!(k, 3.14159) -} - - -fn main() { - let f: &dyn Fn(i32, i32) = &foo; - f(42, 55); - let f: &dyn Fn(i32, i32, f32) = &bar; - f(42, 55, 3.14159); -} diff --git a/tests/run-pass/fn_ptr_as_closure_trait_object.rs b/tests/run-pass/fn_ptr_as_closure_trait_object.rs deleted file mode 100644 index 89daed81507f..000000000000 --- a/tests/run-pass/fn_ptr_as_closure_trait_object.rs +++ /dev/null @@ -1,15 +0,0 @@ -fn foo() {} -fn bar(u: u32) { assert_eq!(u, 42); } -fn baa(u: u32, f: f32) { - assert_eq!(u, 42); - assert_eq!(f, 3.141); -} - -fn main() { - let f: &dyn Fn() = &(foo as fn()); - f(); - let f: &dyn Fn(u32) = &(bar as fn(u32)); - f(42); - let f: &dyn Fn(u32, f32) = &(baa as fn(u32, f32)); - f(42, 3.141); -}