]> git.lizzy.rs Git - rust.git/blob - tests/ui/proc-macro/macro-quote-cond.rs
Auto merge of #107297 - Mark-Simulacrum:bump-bootstrap, r=pietroalbini
[rust.git] / tests / ui / proc-macro / macro-quote-cond.rs
1 // run-pass
2 // aux-build:cond_plugin.rs
3
4 #![allow(unused_parens)]
5
6 extern crate cond_plugin;
7
8 use cond_plugin::cond;
9
10 fn fact(n : i64) -> i64 {
11     if n == 0 {
12         1
13     } else {
14         n * fact(n - 1)
15     }
16 }
17
18 fn fact_cond(n : i64) -> i64 {
19   cond!(
20     ((n == 0) 1)
21     (else (n * fact_cond(n-1)))
22   )
23 }
24
25 fn fib(n : i64) -> i64 {
26   if n == 0 || n == 1 {
27       1
28   } else {
29       fib(n-1) + fib(n-2)
30   }
31 }
32
33 fn fib_cond(n : i64) -> i64 {
34   cond!(
35     ((n == 0) 1)
36     ((n == 1) 1)
37     (else (fib_cond(n-1) + fib_cond(n-2)))
38   )
39 }
40
41 fn main() {
42     assert_eq!(fact(3), fact_cond(3));
43     assert_eq!(fact(5), fact_cond(5));
44     assert_eq!(fib(5), fib_cond(5));
45     assert_eq!(fib(8), fib_cond(8));
46 }