Add test that adding allow attribute on impl block containing len silences len_without_is_empty. Add extra impl block to PubOne to check that this doesn't get flagged@

This commit is contained in:
Phil Ellison 2017-02-19 15:36:17 +00:00
parent 2dd45b7317
commit 0396756098
2 changed files with 60 additions and 36 deletions

View file

@ -12,6 +12,30 @@ impl PubOne {
}
}
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(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 on the
// impl containing len.
impl PubAllowed {
pub fn irrelevant(self: &Self) -> bool {
false
}
}
struct NotPubOne;
impl NotPubOne {

View file

@ -16,48 +16,48 @@ note: lint level defined here
| ^^^^^^^^^^^^^^^^^^^^
error: trait `PubTraitsToo` has a `len` method but no `is_empty` method
--> $DIR/len_zero.rs:31:1
--> $DIR/len_zero.rs:55:1
|
31 | pub trait PubTraitsToo {
55 | pub trait PubTraitsToo {
| _^ starting here...
32 | | fn len(self: &Self) -> isize;
33 | | }
56 | | fn len(self: &Self) -> isize;
57 | | }
| |_^ ...ending here
error: item `HasIsEmpty` has a public `len` method but a private `is_empty` method
--> $DIR/len_zero.rs:65:1
--> $DIR/len_zero.rs:89:1
|
65 | impl HasIsEmpty {
89 | impl HasIsEmpty {
| _^ starting here...
66 | | pub fn len(self: &Self) -> isize {
67 | | 1
68 | | }
69 | |
70 | | fn is_empty(self: &Self) -> bool {
71 | | false
72 | | }
73 | | }
90 | | pub fn len(self: &Self) -> isize {
91 | | 1
92 | | }
93 | |
94 | | fn is_empty(self: &Self) -> bool {
95 | | false
96 | | }
97 | | }
| |_^ ...ending here
error: item `HasWrongIsEmpty` has a public `len` method but no corresponding `is_empty` method
--> $DIR/len_zero.rs:94:1
--> $DIR/len_zero.rs:118:1
|
94 | impl HasWrongIsEmpty {
118 | impl HasWrongIsEmpty {
| _^ starting here...
95 | | pub fn len(self: &Self) -> isize {
96 | | 1
97 | | }
98 | |
99 | | pub fn is_empty(self: &Self, x : u32) -> bool {
100 | | false
101 | | }
102 | | }
119 | | pub fn len(self: &Self) -> isize {
120 | | 1
121 | | }
122 | |
123 | | pub fn is_empty(self: &Self, x : u32) -> bool {
124 | | false
125 | | }
126 | | }
| |_^ ...ending here
error: length comparison to zero
--> $DIR/len_zero.rs:106:8
--> $DIR/len_zero.rs:130:8
|
106 | if x.len() == 0 {
130 | if x.len() == 0 {
| ^^^^^^^^^^^^
|
note: lint level defined here
@ -69,45 +69,45 @@ help: consider using `is_empty`
| if x.is_empty() {
error: length comparison to zero
--> $DIR/len_zero.rs:113:8
--> $DIR/len_zero.rs:137:8
|
113 | if "".len() == 0 {
137 | if "".len() == 0 {
| ^^^^^^^^^^^^^
|
help: consider using `is_empty`
| if "".is_empty() {
error: length comparison to zero
--> $DIR/len_zero.rs:130:8
--> $DIR/len_zero.rs:154:8
|
130 | if has_is_empty.len() == 0 {
154 | if has_is_empty.len() == 0 {
| ^^^^^^^^^^^^^^^^^^^^^^^
|
help: consider using `is_empty`
| if has_is_empty.is_empty() {
error: length comparison to zero
--> $DIR/len_zero.rs:136:8
--> $DIR/len_zero.rs:160:8
|
136 | if has_is_empty.len() != 0 {
160 | if has_is_empty.len() != 0 {
| ^^^^^^^^^^^^^^^^^^^^^^^
|
help: consider using `is_empty`
| if !has_is_empty.is_empty() {
error: length comparison to zero
--> $DIR/len_zero.rs:142:8
--> $DIR/len_zero.rs:166:8
|
142 | if has_is_empty.len() > 0 {
166 | if has_is_empty.len() > 0 {
| ^^^^^^^^^^^^^^^^^^^^^^
|
help: consider using `is_empty`
| if !has_is_empty.is_empty() {
error: length comparison to zero
--> $DIR/len_zero.rs:151:8
--> $DIR/len_zero.rs:175:8
|
151 | if with_is_empty.len() == 0 {
175 | if with_is_empty.len() == 0 {
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
help: consider using `is_empty`