1 #![warn(clippy::only_used_in_recursion)]
3 fn simple(a: usize, b: usize) -> usize {
4 if a == 0 { 1 } else { simple(a - 1, b) }
7 fn with_calc(a: usize, b: isize) -> usize {
8 if a == 0 { 1 } else { with_calc(a - 1, -b + 1) }
11 fn tuple((a, b): (usize, usize)) -> usize {
12 if a == 0 { 1 } else { tuple((a - 1, b + 1)) }
15 fn let_tuple(a: usize, b: usize) -> usize {
17 if c == 0 { 1 } else { let_tuple(c - 1, d + 1) }
20 fn array([a, b]: [usize; 2]) -> usize {
21 if a == 0 { 1 } else { array([a - 1, b + 1]) }
24 fn index(a: usize, mut b: &[usize], c: usize) -> usize {
25 if a == 0 { 1 } else { index(a - 1, b, c + b[0]) }
28 fn break_(a: usize, mut b: usize, mut c: usize) -> usize {
37 if a == 0 { 1 } else { break_(a - 1, c, c) }
40 // this has a side effect
41 fn mut_ref(a: usize, b: &mut usize) -> usize {
43 if a == 0 { 1 } else { mut_ref(a - 1, b) }
46 fn mut_ref2(a: usize, b: &mut usize) -> usize {
48 if a == 0 { 1 } else { mut_ref2(a - 1, &mut c) }
51 fn not_primitive(a: usize, b: String) -> usize {
52 if a == 0 { 1 } else { not_primitive(a - 1, b) }
55 // this doesn't have a side effect,
56 // but `String` is not primitive.
57 fn not_primitive_op(a: usize, b: String, c: &str) -> usize {
58 if a == 1 { 1 } else { not_primitive_op(a, b + c, c) }
64 fn method(a: usize, b: usize) -> usize {
65 if a == 0 { 1 } else { A::method(a - 1, b - 1) }
68 fn method2(&self, a: usize, b: usize) -> usize {
69 if a == 0 { 1 } else { self.method2(a - 1, b + 1) }
74 fn hello(a: usize, b: usize) -> usize;
76 fn hello2(&self, a: usize, b: usize) -> usize;
80 fn hello(a: usize, b: usize) -> usize {
81 if a == 0 { 1 } else { A::hello(a - 1, b + 1) }
84 fn hello2(&self, a: usize, b: usize) -> usize {
85 if a == 0 { 1 } else { self.hello2(a - 1, b + 1) }
90 fn hello(a: usize, b: usize) -> usize {
91 if a == 0 { 1 } else { Self::hello(a - 1, b + 1) }
94 fn hello2(&self, a: usize, b: usize) -> usize {
95 if a == 0 { 1 } else { self.hello2(a - 1, b + 1) }
99 fn ignore(a: usize, _: usize) -> usize {
100 if a == 1 { 1 } else { ignore(a - 1, 0) }
103 fn ignore2(a: usize, _b: usize) -> usize {
104 if a == 1 { 1 } else { ignore2(a - 1, _b) }