]> git.lizzy.rs Git - rust.git/blob - tests/ui/deref_addrof.rs
Addition `manual_map` test for `unsafe` blocks
[rust.git] / tests / ui / deref_addrof.rs
1 // run-rustfix
2 #![warn(clippy::deref_addrof)]
3
4 fn get_number() -> usize {
5     10
6 }
7
8 fn get_reference(n: &usize) -> &usize {
9     n
10 }
11
12 #[allow(clippy::double_parens)]
13 #[allow(unused_variables, unused_parens)]
14 fn main() {
15     let a = 10;
16     let aref = &a;
17
18     let b = *&a;
19
20     let b = *&get_number();
21
22     let b = *get_reference(&a);
23
24     let bytes: Vec<usize> = vec![1, 2, 3, 4];
25     let b = *&bytes[1..2][0];
26
27     //This produces a suggestion of 'let b = (a);' which
28     //will trigger the 'unused_parens' lint
29     let b = *&(a);
30
31     let b = *(&a);
32
33     #[rustfmt::skip]
34     let b = *((&a));
35
36     let b = *&&a;
37
38     let b = **&aref;
39 }
40
41 #[rustfmt::skip]
42 macro_rules! m {
43     ($visitor: expr) => {
44         *& $visitor
45     };
46 }
47
48 #[rustfmt::skip]
49 macro_rules! m_mut {
50     ($visitor: expr) => {
51         *& mut $visitor
52     };
53 }
54
55 pub struct S;
56 impl S {
57     pub fn f(&self) -> &Self {
58         m!(self)
59     }
60     pub fn f_mut(&self) -> &Self {
61         m_mut!(self)
62     }
63 }