]> git.lizzy.rs Git - rust.git/blob - tests/ui/partialeq_to_none.rs
Move MSRV tests into the lint specific test files
[rust.git] / tests / ui / partialeq_to_none.rs
1 // run-rustfix
2 #![warn(clippy::partialeq_to_none)]
3
4 struct Foobar;
5
6 impl PartialEq<Option<()>> for Foobar {
7     fn eq(&self, _: &Option<()>) -> bool {
8         false
9     }
10 }
11
12 #[allow(dead_code)]
13 fn foo(f: Option<u32>) -> &'static str {
14     if f != None { "yay" } else { "nay" }
15 }
16
17 fn foobar() -> Option<()> {
18     None
19 }
20
21 fn bar() -> Result<(), ()> {
22     Ok(())
23 }
24
25 fn optref() -> &'static &'static Option<()> {
26     &&None
27 }
28
29 pub fn macro_expansion() {
30     macro_rules! foo {
31         () => {
32             None::<()>
33         };
34     }
35
36     let _ = foobar() == foo!();
37     let _ = foo!() == foobar();
38     let _ = foo!() == foo!();
39 }
40
41 fn main() {
42     let x = Some(0);
43
44     let _ = x == None;
45     let _ = x != None;
46     let _ = None == x;
47     let _ = None != x;
48
49     if foobar() == None {}
50
51     if bar().ok() != None {}
52
53     let _ = Some(1 + 2) != None;
54
55     let _ = { Some(0) } == None;
56
57     let _ = {
58         /*
59           This comment runs long
60         */
61         Some(1)
62     } != None;
63
64     // Should not trigger, as `Foobar` is not an `Option` and has no `is_none`
65     let _ = Foobar == None;
66
67     let _ = optref() == &&None;
68     let _ = &&None != optref();
69     let _ = **optref() == None;
70     let _ = &None != *optref();
71
72     let x = Box::new(Option::<()>::None);
73     let _ = None != *x;
74 }