]> git.proxmox.com Git - rustc.git/blob - src/tools/clippy/tests/ui/mut_mut.rs
New upstream version 1.70.0+dfsg1
[rustc.git] / src / tools / clippy / tests / ui / mut_mut.rs
1 // aux-build:proc_macros.rs
2 #![warn(clippy::mut_mut)]
3 #![allow(unused)]
4 #![allow(clippy::no_effect, clippy::uninlined_format_args, clippy::unnecessary_operation)]
5
6 extern crate proc_macros;
7 use proc_macros::{external, inline_macros};
8
9 fn fun(x: &mut &mut u32) -> bool {
10 **x > 0
11 }
12
13 fn less_fun(x: *mut *mut u32) {
14 let y = x;
15 }
16
17 macro_rules! mut_ptr {
18 ($p:expr) => {
19 &mut $p
20 };
21 }
22
23 #[allow(unused_mut, unused_variables)]
24 #[inline_macros]
25 fn main() {
26 let mut x = &mut &mut 1u32;
27 {
28 let mut y = &mut x;
29 }
30
31 if fun(x) {
32 let y: &mut &mut u32 = &mut &mut 2;
33 **y + **x;
34 }
35
36 if fun(x) {
37 let y: &mut &mut &mut u32 = &mut &mut &mut 2;
38 ***y + **x;
39 }
40
41 let mut z = inline!(&mut $(&mut 3u32));
42 }
43
44 fn issue939() {
45 let array = [5, 6, 7, 8, 9];
46 let mut args = array.iter().skip(2);
47 for &arg in &mut args {
48 println!("{}", arg);
49 }
50
51 let args = &mut args;
52 for arg in args {
53 println!(":{}", arg);
54 }
55 }
56
57 fn issue6922() {
58 // do not lint from an external macro
59 external!(let mut_mut_ty: &mut &mut u32 = &mut &mut 1u32;);
60 }
61
62 mod issue9035 {
63 use std::fmt::Display;
64
65 struct Foo<'a> {
66 inner: &'a mut dyn Display,
67 }
68
69 impl Foo<'_> {
70 fn foo(&mut self) {
71 let hlp = &mut self.inner;
72 bar(hlp);
73 }
74 }
75
76 fn bar(_: &mut impl Display) {}
77 }