]> git.lizzy.rs Git - rust.git/blob - src/test/ui/consts/const-eval/const_fn_ptr.rs
Merge commit 'd0cf3481a84e3aa68c2f185c460e282af36ebc42' into clippyup
[rust.git] / src / test / ui / consts / const-eval / const_fn_ptr.rs
1 // run-pass
2 // compile-flags: -Zunleash-the-miri-inside-of-you
3
4 fn double(x: usize) -> usize { x * 2 }
5 const fn double_const(x: usize) -> usize { x * 2 }
6
7 const X: fn(usize) -> usize = double;
8 const X_CONST: fn(usize) -> usize = double_const;
9
10 const fn bar(x: usize) -> usize {
11     X(x)
12 }
13
14 const fn bar_const(x: usize) -> usize {
15     X_CONST(x)
16 }
17
18 const fn foo(x: fn(usize) -> usize, y: usize)  -> usize {
19     x(y)
20 }
21
22 fn main() {
23     const Y: usize = bar_const(2);
24     assert_eq!(Y, 4);
25     let y = bar_const(2);
26     assert_eq!(y, 4);
27     let y = bar(2);
28     assert_eq!(y, 4);
29
30     const Z: usize = foo(double_const, 2);
31     assert_eq!(Z, 4);
32     let z = foo(double_const, 2);
33     assert_eq!(z, 4);
34     let z = foo(double, 2);
35     assert_eq!(z, 4);
36 }