]> git.lizzy.rs Git - rust.git/blob - src/tools/miri/tests/pass/calls.rs
Auto merge of #104915 - weihanglo:update-cargo, r=ehuss
[rust.git] / src / tools / miri / tests / pass / calls.rs
1 fn call() -> i32 {
2     fn increment(x: i32) -> i32 {
3         x + 1
4     }
5     increment(1)
6 }
7
8 fn factorial_recursive() -> i64 {
9     fn fact(n: i64) -> i64 {
10         if n == 0 { 1 } else { n * fact(n - 1) }
11     }
12     fact(10)
13 }
14
15 fn call_generic() -> (i16, bool) {
16     fn id<T>(t: T) -> T {
17         t
18     }
19     (id(42), id(true))
20 }
21
22 // Test calling a very simple function from the standard library.
23 fn cross_crate_fn_call() -> i64 {
24     if 1i32.is_positive() { 1 } else { 0 }
25 }
26
27 const fn foo(i: i64) -> i64 {
28     *&i + 1
29 }
30
31 fn const_fn_call() -> i64 {
32     let x = 5 + foo(5);
33     assert_eq!(x, 11);
34     x
35 }
36
37 fn main() {
38     assert_eq!(call(), 2);
39     assert_eq!(factorial_recursive(), 3628800);
40     assert_eq!(call_generic(), (42, true));
41     assert_eq!(cross_crate_fn_call(), 1);
42     assert_eq!(const_fn_call(), 11);
43 }