]> git.lizzy.rs Git - rust.git/blob - src/tools/clippy/tests/ui/partialeq_to_none.fixed
Rollup merge of #102764 - compiler-errors:issue-102762, r=jackh726
[rust.git] / src / tools / clippy / tests / ui / partialeq_to_none.fixed
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.is_some() { "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.is_none();
45     let _ = x.is_some();
46     let _ = x.is_none();
47     let _ = x.is_some();
48
49     if foobar().is_none() {}
50
51     if bar().ok().is_some() {}
52
53     let _ = Some(1 + 2).is_some();
54
55     let _ = { Some(0) }.is_none();
56
57     let _ = {
58         /*
59           This comment runs long
60         */
61         Some(1)
62     }.is_some();
63
64     // Should not trigger, as `Foobar` is not an `Option` and has no `is_none`
65     let _ = Foobar == None;
66
67     let _ = optref().is_none();
68     let _ = optref().is_some();
69     let _ = optref().is_none();
70     let _ = optref().is_some();
71
72     let x = Box::new(Option::<()>::None);
73     let _ = (*x).is_some();
74 }