Skip to content

Commit c748323

Browse files
committed
move fn_item/ptr tests to closures file
1 parent badbd57 commit c748323

5 files changed

+52
-47
lines changed

tests/run-pass/closures.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,62 @@ fn boxed(f: Box<dyn FnOnce() -> i32>) -> i32 {
4444
f()
4545
}
4646

47+
fn fn_item_as_closure_trait_object() {
48+
fn foo() {}
49+
let f: &dyn Fn() = &foo;
50+
f();
51+
}
52+
53+
fn fn_item_with_args_as_closure_trait_object() {
54+
fn foo(i: i32) {
55+
assert_eq!(i, 42);
56+
}
57+
let f: &dyn Fn(i32) = &foo;
58+
f(42);
59+
}
60+
61+
fn fn_item_with_multiple_args_as_closure_trait_object() {
62+
fn foo(i: i32, j: i32) {
63+
assert_eq!(i, 42);
64+
assert_eq!(j, 55);
65+
}
66+
67+
fn bar(i: i32, j: i32, k: f32) {
68+
assert_eq!(i, 42);
69+
assert_eq!(j, 55);
70+
assert_eq!(k, 3.14159)
71+
}
72+
let f: &dyn Fn(i32, i32) = &foo;
73+
f(42, 55);
74+
let f: &dyn Fn(i32, i32, f32) = &bar;
75+
f(42, 55, 3.14159);
76+
}
77+
78+
fn fn_ptr_as_closure_trait_object() {
79+
fn foo() {}
80+
fn bar(u: u32) { assert_eq!(u, 42); }
81+
fn baa(u: u32, f: f32) {
82+
assert_eq!(u, 42);
83+
assert_eq!(f, 3.141);
84+
}
85+
let f: &dyn Fn() = &(foo as fn());
86+
f();
87+
let f: &dyn Fn(u32) = &(bar as fn(u32));
88+
f(42);
89+
let f: &dyn Fn(u32, f32) = &(baa as fn(u32, f32));
90+
f(42, 3.141);
91+
}
92+
93+
4794
fn main() {
4895
assert_eq!(simple(), 12);
4996
assert_eq!(crazy_closure(), (84, 10, 10));
5097
assert_eq!(closure_arg_adjustment_problem(), 3);
5198
assert_eq!(fn_once_closure_with_multiple_args(), 6);
5299
assert_eq!(boxed(Box::new({let x = 13; move || x})), 13);
100+
101+
fn_item_as_closure_trait_object();
102+
fn_item_with_args_as_closure_trait_object();
103+
fn_item_with_multiple_args_as_closure_trait_object();
104+
fn_ptr_as_closure_trait_object();
53105
}

tests/run-pass/fn_item_as_closure_trait_object.rs

Lines changed: 0 additions & 6 deletions
This file was deleted.

tests/run-pass/fn_item_with_args_as_closure_trait_object.rs

Lines changed: 0 additions & 8 deletions
This file was deleted.

tests/run-pass/fn_item_with_multiple_args_as_closure_trait_object.rs

Lines changed: 0 additions & 18 deletions
This file was deleted.

tests/run-pass/fn_ptr_as_closure_trait_object.rs

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)