]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/only_used_in_recursion.rs
Auto merge of #101969 - reez12g:issue-101306, r=reez12g
[rust.git] / src / tools / clippy / tests / ui / only_used_in_recursion.rs
1 #![warn(clippy::only_used_in_recursion)]
2
3 fn _simple(x: u32) -> u32 {
4     x
5 }
6
7 fn _simple2(x: u32) -> u32 {
8     _simple(x)
9 }
10
11 fn _one_unused(flag: u32, a: usize) -> usize {
12     if flag == 0 { 0 } else { _one_unused(flag - 1, a) }
13 }
14
15 fn _two_unused(flag: u32, a: u32, b: i32) -> usize {
16     if flag == 0 { 0 } else { _two_unused(flag - 1, a, b) }
17 }
18
19 fn _with_calc(flag: u32, a: i64) -> usize {
20     if flag == 0 {
21         0
22     } else {
23         _with_calc(flag - 1, (-a + 10) * 5)
24     }
25 }
26
27 // Don't lint
28 fn _used_with_flag(flag: u32, a: u32) -> usize {
29     if flag == 0 { 0 } else { _used_with_flag(flag ^ a, a - 1) }
30 }
31
32 fn _used_with_unused(flag: u32, a: i32, b: i32) -> usize {
33     if flag == 0 {
34         0
35     } else {
36         _used_with_unused(flag - 1, -a, a + b)
37     }
38 }
39
40 fn _codependent_unused(flag: u32, a: i32, b: i32) -> usize {
41     if flag == 0 {
42         0
43     } else {
44         _codependent_unused(flag - 1, a * b, a + b)
45     }
46 }
47
48 fn _not_primitive(flag: u32, b: String) -> usize {
49     if flag == 0 { 0 } else { _not_primitive(flag - 1, b) }
50 }
51
52 struct A;
53
54 impl A {
55     fn _method(flag: usize, a: usize) -> usize {
56         if flag == 0 { 0 } else { Self::_method(flag - 1, a) }
57     }
58
59     fn _method_self(&self, flag: usize, a: usize) -> usize {
60         if flag == 0 { 0 } else { self._method_self(flag - 1, a) }
61     }
62 }
63
64 trait B {
65     fn method(flag: u32, a: usize) -> usize;
66     fn method_self(&self, flag: u32, a: usize) -> usize;
67 }
68
69 impl B for A {
70     fn method(flag: u32, a: usize) -> usize {
71         if flag == 0 { 0 } else { Self::method(flag - 1, a) }
72     }
73
74     fn method_self(&self, flag: u32, a: usize) -> usize {
75         if flag == 0 { 0 } else { self.method_self(flag - 1, a) }
76     }
77 }
78
79 impl B for () {
80     fn method(flag: u32, a: usize) -> usize {
81         if flag == 0 { 0 } else { a }
82     }
83
84     fn method_self(&self, flag: u32, a: usize) -> usize {
85         if flag == 0 { 0 } else { a }
86     }
87 }
88
89 impl B for u32 {
90     fn method(flag: u32, a: usize) -> usize {
91         if flag == 0 { 0 } else { <() as B>::method(flag, a) }
92     }
93
94     fn method_self(&self, flag: u32, a: usize) -> usize {
95         if flag == 0 { 0 } else { ().method_self(flag, a) }
96     }
97 }
98
99 trait C {
100     fn method(flag: u32, a: usize) -> usize {
101         if flag == 0 { 0 } else { Self::method(flag - 1, a) }
102     }
103
104     fn method_self(&self, flag: u32, a: usize) -> usize {
105         if flag == 0 { 0 } else { self.method_self(flag - 1, a) }
106     }
107 }
108
109 fn _ignore(flag: usize, _a: usize) -> usize {
110     if flag == 0 { 0 } else { _ignore(flag - 1, _a) }
111 }
112
113 fn main() {}