diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui-toml/ifs_same_cond/clippy.toml | 1 | ||||
| -rw-r--r-- | tests/ui-toml/ifs_same_cond/ifs_same_cond.rs | 24 | ||||
| -rw-r--r-- | tests/ui/ifs_same_cond.rs | 8 |
3 files changed, 33 insertions, 0 deletions
diff --git a/tests/ui-toml/ifs_same_cond/clippy.toml b/tests/ui-toml/ifs_same_cond/clippy.toml new file mode 100644 index 00000000000..1615d970c68 --- /dev/null +++ b/tests/ui-toml/ifs_same_cond/clippy.toml @@ -0,0 +1 @@ +ignore-interior-mutability = ["std::cell::Cell"] \ No newline at end of file diff --git a/tests/ui-toml/ifs_same_cond/ifs_same_cond.rs b/tests/ui-toml/ifs_same_cond/ifs_same_cond.rs new file mode 100644 index 00000000000..92438e7d1f2 --- /dev/null +++ b/tests/ui-toml/ifs_same_cond/ifs_same_cond.rs @@ -0,0 +1,24 @@ +#![warn(clippy::ifs_same_cond)] +#![allow(clippy::if_same_then_else, clippy::comparison_chain)] + +fn main() {} + +fn issue10272() { + use std::cell::Cell; + + let x = Cell::new(true); + if x.get() { + } else if !x.take() { + } else if x.get() { + // ok, x is interior mutable type + } else { + } + + let a = [Cell::new(true)]; + if a[0].get() { + } else if a[0].take() { + } else if a[0].get() { + // ok, a contains interior mutable type + } else { + } +} diff --git a/tests/ui/ifs_same_cond.rs b/tests/ui/ifs_same_cond.rs index e68ec6a8573..ae91611c472 100644 --- a/tests/ui/ifs_same_cond.rs +++ b/tests/ui/ifs_same_cond.rs @@ -51,6 +51,14 @@ fn issue10272() { } else if a.contains("ha") { } else if a == "wow" { } + + let p: *mut i8 = std::ptr::null_mut(); + if p.is_null() { + } else if p.align_offset(0) == 0 { + } else if p.is_null() { + // ok, p is mutable pointer + } else { + } } fn main() {} |
