| #![warn(clippy::only_used_in_recursion)] | |
| //@no-rustfix | |
| fn _with_inner(flag: u32, a: u32, b: u32) -> usize { | |
| //~^ only_used_in_recursion | |
| fn inner(flag: u32, a: u32) -> u32 { | |
| //~^ only_used_in_recursion | |
| if flag == 0 { 0 } else { inner(flag, a) } | |
| } | |
| let x = inner(flag, a); | |
| if flag == 0 { 0 } else { _with_inner(flag, a, b + x) } | |
| } | |
| fn _with_closure(a: Option<u32>, b: u32, f: impl Fn(u32, u32) -> Option<u32>) -> u32 { | |
| //~^ only_used_in_recursion | |
| if let Some(x) = a.and_then(|x| f(x, x)) { | |
| _with_closure(Some(x), b, f) | |
| } else { | |
| 0 | |
| } | |
| } | |
| // Issue #8560 | |
| trait D { | |
| fn foo(&mut self, arg: u32) -> u32; | |
| } | |
| mod m { | |
| pub struct S(u32); | |
| impl S { | |
| pub fn foo(&mut self, arg: u32) -> u32 { | |
| arg + self.0 | |
| } | |
| } | |
| } | |
| impl D for m::S { | |
| fn foo(&mut self, arg: u32) -> u32 { | |
| self.foo(arg) | |
| } | |
| } | |
| // Issue #8782 | |
| fn only_let(x: u32) { | |
| let y = 10u32; | |
| let _z = x * y; | |
| } | |
| trait E<T: E<()>> { | |
| fn method(flag: u32, a: usize) -> usize { | |
| if flag == 0 { | |
| 0 | |
| } else { | |
| <T as E<()>>::method(flag - 1, a) | |
| } | |
| } | |
| } | |
| impl E<()> for () { | |
| fn method(flag: u32, a: usize) -> usize { | |
| if flag == 0 { 0 } else { a } | |
| } | |
| } | |
| fn overwritten_param(flag: u32, mut a: usize) -> usize { | |
| //~^ only_used_in_recursion | |
| if flag == 0 { | |
| return 0; | |
| } else if flag > 5 { | |
| a += flag as usize; | |
| } else { | |
| a = 5; | |
| } | |
| overwritten_param(flag, a) | |
| } | |
| fn field_direct(flag: u32, mut a: (usize,)) -> usize { | |
| //~^ only_used_in_recursion | |
| if flag == 0 { | |
| 0 | |
| } else { | |
| a.0 += 5; | |
| field_direct(flag - 1, a) | |
| } | |
| } | |
| fn field_deref(flag: u32, a: &mut Box<(usize,)>) -> usize { | |
| if flag == 0 { | |
| 0 | |
| } else { | |
| a.0 += 5; | |
| field_deref(flag - 1, a) | |
| } | |
| } | |
| fn main() {} |