mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-27 07:00:55 +00:00
Auto merge of #3978 - phansch:rustfix_len_zero, r=flip1995
Add run-rustfix for len_zero lint * Extracts len_without_is_empty into separate file * Adds `// run-rustfix` to `tests/ui/len_zero.rs` cc #3630
This commit is contained in:
commit
77fbdb6494
5 changed files with 373 additions and 169 deletions
145
tests/ui/len_without_is_empty.rs
Normal file
145
tests/ui/len_without_is_empty.rs
Normal file
|
@ -0,0 +1,145 @@
|
||||||
|
#![warn(clippy::len_without_is_empty)]
|
||||||
|
#![allow(dead_code, unused)]
|
||||||
|
|
||||||
|
pub struct PubOne;
|
||||||
|
|
||||||
|
impl PubOne {
|
||||||
|
pub fn len(self: &Self) -> isize {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PubOne {
|
||||||
|
// A second impl for this struct -- the error span shouldn't mention this.
|
||||||
|
pub fn irrelevant(self: &Self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Identical to `PubOne`, but with an `allow` attribute on the impl complaining `len`.
|
||||||
|
pub struct PubAllowed;
|
||||||
|
|
||||||
|
#[allow(clippy::len_without_is_empty)]
|
||||||
|
impl PubAllowed {
|
||||||
|
pub fn len(self: &Self) -> isize {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// No `allow` attribute on this impl block, but that doesn't matter -- we only require one on the
|
||||||
|
// impl containing `len`.
|
||||||
|
impl PubAllowed {
|
||||||
|
pub fn irrelevant(self: &Self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait PubTraitsToo {
|
||||||
|
fn len(self: &Self) -> isize;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PubTraitsToo for One {
|
||||||
|
fn len(self: &Self) -> isize {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct HasIsEmpty;
|
||||||
|
|
||||||
|
impl HasIsEmpty {
|
||||||
|
pub fn len(self: &Self) -> isize {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_empty(self: &Self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct HasWrongIsEmpty;
|
||||||
|
|
||||||
|
impl HasWrongIsEmpty {
|
||||||
|
pub fn len(self: &Self) -> isize {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_empty(self: &Self, x: u32) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct NotPubOne;
|
||||||
|
|
||||||
|
impl NotPubOne {
|
||||||
|
pub fn len(self: &Self) -> isize {
|
||||||
|
// No error; `len` is pub but `NotPubOne` is not exported anyway.
|
||||||
|
1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct One;
|
||||||
|
|
||||||
|
impl One {
|
||||||
|
fn len(self: &Self) -> isize {
|
||||||
|
// No error; `len` is private; see issue #1085.
|
||||||
|
1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trait TraitsToo {
|
||||||
|
fn len(self: &Self) -> isize;
|
||||||
|
// No error; `len` is private; see issue #1085.
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TraitsToo for One {
|
||||||
|
fn len(self: &Self) -> isize {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct HasPrivateIsEmpty;
|
||||||
|
|
||||||
|
impl HasPrivateIsEmpty {
|
||||||
|
pub fn len(self: &Self) -> isize {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_empty(self: &Self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Wither;
|
||||||
|
|
||||||
|
pub trait WithIsEmpty {
|
||||||
|
fn len(self: &Self) -> isize;
|
||||||
|
fn is_empty(self: &Self) -> bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WithIsEmpty for Wither {
|
||||||
|
fn len(self: &Self) -> isize {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_empty(self: &Self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait Empty {
|
||||||
|
fn is_empty(&self) -> bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait InheritingEmpty: Empty {
|
||||||
|
// Must not trigger `LEN_WITHOUT_IS_EMPTY`.
|
||||||
|
fn len(&self) -> isize;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This used to ICE.
|
||||||
|
pub trait Foo: Sized {}
|
||||||
|
|
||||||
|
pub trait DependsOnFoo: Foo {
|
||||||
|
fn len(&mut self) -> usize;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
54
tests/ui/len_without_is_empty.stderr
Normal file
54
tests/ui/len_without_is_empty.stderr
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
error: item `PubOne` has a public `len` method but no corresponding `is_empty` method
|
||||||
|
--> $DIR/len_without_is_empty.rs:6:1
|
||||||
|
|
|
||||||
|
LL | / impl PubOne {
|
||||||
|
LL | | pub fn len(self: &Self) -> isize {
|
||||||
|
LL | | 1
|
||||||
|
LL | | }
|
||||||
|
LL | | }
|
||||||
|
| |_^
|
||||||
|
|
|
||||||
|
= note: `-D clippy::len-without-is-empty` implied by `-D warnings`
|
||||||
|
|
||||||
|
error: trait `PubTraitsToo` has a `len` method but no (possibly inherited) `is_empty` method
|
||||||
|
--> $DIR/len_without_is_empty.rs:37:1
|
||||||
|
|
|
||||||
|
LL | / pub trait PubTraitsToo {
|
||||||
|
LL | | fn len(self: &Self) -> isize;
|
||||||
|
LL | | }
|
||||||
|
| |_^
|
||||||
|
|
||||||
|
error: item `HasIsEmpty` has a public `len` method but a private `is_empty` method
|
||||||
|
--> $DIR/len_without_is_empty.rs:49:1
|
||||||
|
|
|
||||||
|
LL | / impl HasIsEmpty {
|
||||||
|
LL | | pub fn len(self: &Self) -> isize {
|
||||||
|
LL | | 1
|
||||||
|
LL | | }
|
||||||
|
... |
|
||||||
|
LL | | }
|
||||||
|
LL | | }
|
||||||
|
| |_^
|
||||||
|
|
||||||
|
error: item `HasWrongIsEmpty` has a public `len` method but no corresponding `is_empty` method
|
||||||
|
--> $DIR/len_without_is_empty.rs:61:1
|
||||||
|
|
|
||||||
|
LL | / impl HasWrongIsEmpty {
|
||||||
|
LL | | pub fn len(self: &Self) -> isize {
|
||||||
|
LL | | 1
|
||||||
|
LL | | }
|
||||||
|
... |
|
||||||
|
LL | | }
|
||||||
|
LL | | }
|
||||||
|
| |_^
|
||||||
|
|
||||||
|
error: trait `DependsOnFoo` has a `len` method but no (possibly inherited) `is_empty` method
|
||||||
|
--> $DIR/len_without_is_empty.rs:141:1
|
||||||
|
|
|
||||||
|
LL | / pub trait DependsOnFoo: Foo {
|
||||||
|
LL | | fn len(&mut self) -> usize;
|
||||||
|
LL | | }
|
||||||
|
| |_^
|
||||||
|
|
||||||
|
error: aborting due to 5 previous errors
|
||||||
|
|
143
tests/ui/len_zero.fixed
Normal file
143
tests/ui/len_zero.fixed
Normal file
|
@ -0,0 +1,143 @@
|
||||||
|
// run-rustfix
|
||||||
|
|
||||||
|
#![warn(clippy::len_zero)]
|
||||||
|
#![allow(dead_code, unused, clippy::len_without_is_empty)]
|
||||||
|
|
||||||
|
pub struct One;
|
||||||
|
struct Wither;
|
||||||
|
|
||||||
|
trait TraitsToo {
|
||||||
|
fn len(self: &Self) -> isize;
|
||||||
|
// No error; `len` is private; see issue #1085.
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TraitsToo for One {
|
||||||
|
fn len(self: &Self) -> isize {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct HasIsEmpty;
|
||||||
|
|
||||||
|
impl HasIsEmpty {
|
||||||
|
pub fn len(self: &Self) -> isize {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_empty(self: &Self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct HasWrongIsEmpty;
|
||||||
|
|
||||||
|
impl HasWrongIsEmpty {
|
||||||
|
pub fn len(self: &Self) -> isize {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_empty(self: &Self, x: u32) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub trait WithIsEmpty {
|
||||||
|
fn len(self: &Self) -> isize;
|
||||||
|
fn is_empty(self: &Self) -> bool;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl WithIsEmpty for Wither {
|
||||||
|
fn len(self: &Self) -> isize {
|
||||||
|
1
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_empty(self: &Self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let x = [1, 2];
|
||||||
|
if x.is_empty() {
|
||||||
|
println!("This should not happen!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if "".is_empty() {}
|
||||||
|
|
||||||
|
let y = One;
|
||||||
|
if y.len() == 0 {
|
||||||
|
// No error; `One` does not have `.is_empty()`.
|
||||||
|
println!("This should not happen either!");
|
||||||
|
}
|
||||||
|
|
||||||
|
let z: &TraitsToo = &y;
|
||||||
|
if z.len() > 0 {
|
||||||
|
// No error; `TraitsToo` has no `.is_empty()` method.
|
||||||
|
println!("Nor should this!");
|
||||||
|
}
|
||||||
|
|
||||||
|
let has_is_empty = HasIsEmpty;
|
||||||
|
if has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if !has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if !has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if !has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if has_is_empty.len() > 1 {
|
||||||
|
// No error.
|
||||||
|
println!("This can happen.");
|
||||||
|
}
|
||||||
|
if has_is_empty.len() <= 1 {
|
||||||
|
// No error.
|
||||||
|
println!("This can happen.");
|
||||||
|
}
|
||||||
|
if has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if !has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if !has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if !has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if has_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
if 1 < has_is_empty.len() {
|
||||||
|
// No error.
|
||||||
|
println!("This can happen.");
|
||||||
|
}
|
||||||
|
if 1 >= has_is_empty.len() {
|
||||||
|
// No error.
|
||||||
|
println!("This can happen.");
|
||||||
|
}
|
||||||
|
assert!(!has_is_empty.is_empty());
|
||||||
|
|
||||||
|
let with_is_empty: &WithIsEmpty = &Wither;
|
||||||
|
if with_is_empty.is_empty() {
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
assert!(!with_is_empty.is_empty());
|
||||||
|
|
||||||
|
let has_wrong_is_empty = HasWrongIsEmpty;
|
||||||
|
if has_wrong_is_empty.len() == 0 {
|
||||||
|
// No error; `HasWrongIsEmpty` does not have `.is_empty()`.
|
||||||
|
println!("Or this!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_slice(b: &[u8]) {
|
||||||
|
if !b.is_empty() {}
|
||||||
|
}
|
|
@ -1,66 +1,10 @@
|
||||||
#![warn(clippy::len_without_is_empty, clippy::len_zero)]
|
// run-rustfix
|
||||||
#![allow(dead_code, unused)]
|
|
||||||
|
|
||||||
pub struct PubOne;
|
#![warn(clippy::len_zero)]
|
||||||
|
#![allow(dead_code, unused, clippy::len_without_is_empty)]
|
||||||
|
|
||||||
impl PubOne {
|
pub struct One;
|
||||||
pub fn len(self: &Self) -> isize {
|
struct Wither;
|
||||||
1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl PubOne {
|
|
||||||
// A second impl for this struct -- the error span shouldn't mention this.
|
|
||||||
pub fn irrelevant(self: &Self) -> bool {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Identical to `PubOne`, but with an `allow` attribute on the impl complaining `len`.
|
|
||||||
pub struct PubAllowed;
|
|
||||||
|
|
||||||
#[allow(clippy::len_without_is_empty)]
|
|
||||||
impl PubAllowed {
|
|
||||||
pub fn len(self: &Self) -> isize {
|
|
||||||
1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// No `allow` attribute on this impl block, but that doesn't matter -- we only require one on the
|
|
||||||
// impl containing `len`.
|
|
||||||
impl PubAllowed {
|
|
||||||
pub fn irrelevant(self: &Self) -> bool {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct NotPubOne;
|
|
||||||
|
|
||||||
impl NotPubOne {
|
|
||||||
pub fn len(self: &Self) -> isize {
|
|
||||||
// No error; `len` is pub but `NotPubOne` is not exported anyway.
|
|
||||||
1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
struct One;
|
|
||||||
|
|
||||||
impl One {
|
|
||||||
fn len(self: &Self) -> isize {
|
|
||||||
// No error; `len` is private; see issue #1085.
|
|
||||||
1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait PubTraitsToo {
|
|
||||||
fn len(self: &Self) -> isize;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl PubTraitsToo for One {
|
|
||||||
fn len(self: &Self) -> isize {
|
|
||||||
0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
trait TraitsToo {
|
trait TraitsToo {
|
||||||
fn len(self: &Self) -> isize;
|
fn len(self: &Self) -> isize;
|
||||||
|
@ -73,18 +17,6 @@ impl TraitsToo for One {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct HasPrivateIsEmpty;
|
|
||||||
|
|
||||||
impl HasPrivateIsEmpty {
|
|
||||||
pub fn len(self: &Self) -> isize {
|
|
||||||
1
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_empty(self: &Self) -> bool {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct HasIsEmpty;
|
pub struct HasIsEmpty;
|
||||||
|
|
||||||
impl HasIsEmpty {
|
impl HasIsEmpty {
|
||||||
|
@ -97,23 +29,6 @@ impl HasIsEmpty {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Wither;
|
|
||||||
|
|
||||||
pub trait WithIsEmpty {
|
|
||||||
fn len(self: &Self) -> isize;
|
|
||||||
fn is_empty(self: &Self) -> bool;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl WithIsEmpty for Wither {
|
|
||||||
fn len(self: &Self) -> isize {
|
|
||||||
1
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_empty(self: &Self) -> bool {
|
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct HasWrongIsEmpty;
|
pub struct HasWrongIsEmpty;
|
||||||
|
|
||||||
impl HasWrongIsEmpty {
|
impl HasWrongIsEmpty {
|
||||||
|
@ -126,13 +41,19 @@ impl HasWrongIsEmpty {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait Empty {
|
pub trait WithIsEmpty {
|
||||||
fn is_empty(&self) -> bool;
|
fn len(self: &Self) -> isize;
|
||||||
|
fn is_empty(self: &Self) -> bool;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub trait InheritingEmpty: Empty {
|
impl WithIsEmpty for Wither {
|
||||||
// Must not trigger `LEN_WITHOUT_IS_EMPTY`.
|
fn len(self: &Self) -> isize {
|
||||||
fn len(&self) -> isize;
|
1
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_empty(self: &Self) -> bool {
|
||||||
|
false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -220,10 +141,3 @@ fn main() {
|
||||||
fn test_slice(b: &[u8]) {
|
fn test_slice(b: &[u8]) {
|
||||||
if b.len() != 0 {}
|
if b.len() != 0 {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// This used to ICE.
|
|
||||||
pub trait Foo: Sized {}
|
|
||||||
|
|
||||||
pub trait DependsOnFoo: Foo {
|
|
||||||
fn len(&mut self) -> usize;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,49 +1,5 @@
|
||||||
error: item `PubOne` has a public `len` method but no corresponding `is_empty` method
|
|
||||||
--> $DIR/len_zero.rs:6:1
|
|
||||||
|
|
|
||||||
LL | / impl PubOne {
|
|
||||||
LL | | pub fn len(self: &Self) -> isize {
|
|
||||||
LL | | 1
|
|
||||||
LL | | }
|
|
||||||
LL | | }
|
|
||||||
| |_^
|
|
||||||
|
|
|
||||||
= note: `-D clippy::len-without-is-empty` implied by `-D warnings`
|
|
||||||
|
|
||||||
error: trait `PubTraitsToo` has a `len` method but no (possibly inherited) `is_empty` method
|
|
||||||
--> $DIR/len_zero.rs:55:1
|
|
||||||
|
|
|
||||||
LL | / pub trait PubTraitsToo {
|
|
||||||
LL | | fn len(self: &Self) -> isize;
|
|
||||||
LL | | }
|
|
||||||
| |_^
|
|
||||||
|
|
||||||
error: item `HasIsEmpty` has a public `len` method but a private `is_empty` method
|
|
||||||
--> $DIR/len_zero.rs:90:1
|
|
||||||
|
|
|
||||||
LL | / impl HasIsEmpty {
|
|
||||||
LL | | pub fn len(self: &Self) -> isize {
|
|
||||||
LL | | 1
|
|
||||||
LL | | }
|
|
||||||
... |
|
|
||||||
LL | | }
|
|
||||||
LL | | }
|
|
||||||
| |_^
|
|
||||||
|
|
||||||
error: item `HasWrongIsEmpty` has a public `len` method but no corresponding `is_empty` method
|
|
||||||
--> $DIR/len_zero.rs:119:1
|
|
||||||
|
|
|
||||||
LL | / impl HasWrongIsEmpty {
|
|
||||||
LL | | pub fn len(self: &Self) -> isize {
|
|
||||||
LL | | 1
|
|
||||||
LL | | }
|
|
||||||
... |
|
|
||||||
LL | | }
|
|
||||||
LL | | }
|
|
||||||
| |_^
|
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:140:8
|
--> $DIR/len_zero.rs:61:8
|
||||||
|
|
|
|
||||||
LL | if x.len() == 0 {
|
LL | if x.len() == 0 {
|
||||||
| ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `x.is_empty()`
|
| ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `x.is_empty()`
|
||||||
|
@ -51,90 +7,82 @@ LL | if x.len() == 0 {
|
||||||
= note: `-D clippy::len-zero` implied by `-D warnings`
|
= note: `-D clippy::len-zero` implied by `-D warnings`
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:144:8
|
--> $DIR/len_zero.rs:65:8
|
||||||
|
|
|
|
||||||
LL | if "".len() == 0 {}
|
LL | if "".len() == 0 {}
|
||||||
| ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `"".is_empty()`
|
| ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `"".is_empty()`
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:159:8
|
--> $DIR/len_zero.rs:80:8
|
||||||
|
|
|
|
||||||
LL | if has_is_empty.len() == 0 {
|
LL | if has_is_empty.len() == 0 {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:162:8
|
--> $DIR/len_zero.rs:83:8
|
||||||
|
|
|
|
||||||
LL | if has_is_empty.len() != 0 {
|
LL | if has_is_empty.len() != 0 {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:165:8
|
--> $DIR/len_zero.rs:86:8
|
||||||
|
|
|
|
||||||
LL | if has_is_empty.len() > 0 {
|
LL | if has_is_empty.len() > 0 {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to one
|
error: length comparison to one
|
||||||
--> $DIR/len_zero.rs:168:8
|
--> $DIR/len_zero.rs:89:8
|
||||||
|
|
|
|
||||||
LL | if has_is_empty.len() < 1 {
|
LL | if has_is_empty.len() < 1 {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to one
|
error: length comparison to one
|
||||||
--> $DIR/len_zero.rs:171:8
|
--> $DIR/len_zero.rs:92:8
|
||||||
|
|
|
|
||||||
LL | if has_is_empty.len() >= 1 {
|
LL | if has_is_empty.len() >= 1 {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:182:8
|
--> $DIR/len_zero.rs:103:8
|
||||||
|
|
|
|
||||||
LL | if 0 == has_is_empty.len() {
|
LL | if 0 == has_is_empty.len() {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:185:8
|
--> $DIR/len_zero.rs:106:8
|
||||||
|
|
|
|
||||||
LL | if 0 != has_is_empty.len() {
|
LL | if 0 != has_is_empty.len() {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:188:8
|
--> $DIR/len_zero.rs:109:8
|
||||||
|
|
|
|
||||||
LL | if 0 < has_is_empty.len() {
|
LL | if 0 < has_is_empty.len() {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to one
|
error: length comparison to one
|
||||||
--> $DIR/len_zero.rs:191:8
|
--> $DIR/len_zero.rs:112:8
|
||||||
|
|
|
|
||||||
LL | if 1 <= has_is_empty.len() {
|
LL | if 1 <= has_is_empty.len() {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to one
|
error: length comparison to one
|
||||||
--> $DIR/len_zero.rs:194:8
|
--> $DIR/len_zero.rs:115:8
|
||||||
|
|
|
|
||||||
LL | if 1 > has_is_empty.len() {
|
LL | if 1 > has_is_empty.len() {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `has_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `has_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:208:8
|
--> $DIR/len_zero.rs:129:8
|
||||||
|
|
|
|
||||||
LL | if with_is_empty.len() == 0 {
|
LL | if with_is_empty.len() == 0 {
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `with_is_empty.is_empty()`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `with_is_empty.is_empty()`
|
||||||
|
|
||||||
error: length comparison to zero
|
error: length comparison to zero
|
||||||
--> $DIR/len_zero.rs:221:8
|
--> $DIR/len_zero.rs:142:8
|
||||||
|
|
|
|
||||||
LL | if b.len() != 0 {}
|
LL | if b.len() != 0 {}
|
||||||
| ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!b.is_empty()`
|
| ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!b.is_empty()`
|
||||||
|
|
||||||
error: trait `DependsOnFoo` has a `len` method but no (possibly inherited) `is_empty` method
|
error: aborting due to 14 previous errors
|
||||||
--> $DIR/len_zero.rs:227:1
|
|
||||||
|
|
|
||||||
LL | / pub trait DependsOnFoo: Foo {
|
|
||||||
LL | | fn len(&mut self) -> usize;
|
|
||||||
LL | | }
|
|
||||||
| |_^
|
|
||||||
|
|
||||||
error: aborting due to 19 previous errors
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue