]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/vtable_address_comparisons.rs
Auto merge of #97944 - nikic:freebsd-update, r=Mark-Simulacrum
[rust.git] / src / tools / clippy / tests / ui / vtable_address_comparisons.rs
1 use std::fmt::Debug;
2 use std::ptr;
3 use std::rc::Rc;
4 use std::sync::Arc;
5
6 #[warn(clippy::vtable_address_comparisons)]
7 #[allow(clippy::borrow_as_ptr)]
8
9 fn main() {
10     let a: *const dyn Debug = &1 as &dyn Debug;
11     let b: *const dyn Debug = &1 as &dyn Debug;
12
13     // These should fail:
14     let _ = a == b;
15     let _ = a != b;
16     let _ = a < b;
17     let _ = a <= b;
18     let _ = a > b;
19     let _ = a >= b;
20     ptr::eq(a, b);
21
22     let a = &1 as &dyn Debug;
23     let b = &1 as &dyn Debug;
24     ptr::eq(a, b);
25
26     let a: Rc<dyn Debug> = Rc::new(1);
27     Rc::ptr_eq(&a, &a);
28
29     let a: Arc<dyn Debug> = Arc::new(1);
30     Arc::ptr_eq(&a, &a);
31
32     // These should be fine:
33     let a = &1;
34     ptr::eq(a, a);
35
36     let a = Rc::new(1);
37     Rc::ptr_eq(&a, &a);
38
39     let a = Arc::new(1);
40     Arc::ptr_eq(&a, &a);
41
42     let a: &[u8] = b"";
43     ptr::eq(a, a);
44 }