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