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; struct NotPubOne;
impl 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 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... | _^ starting here...
32 | | fn len(self: &Self) -> isize; 56 | | fn len(self: &Self) -> isize;
33 | | } 57 | | }
| |_^ ...ending here | |_^ ...ending here
error: item `HasIsEmpty` has a public `len` method but a private `is_empty` method 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... | _^ starting here...
66 | | pub fn len(self: &Self) -> isize { 90 | | pub fn len(self: &Self) -> isize {
67 | | 1 91 | | 1
68 | | } 92 | | }
69 | | 93 | |
70 | | fn is_empty(self: &Self) -> bool { 94 | | fn is_empty(self: &Self) -> bool {
71 | | false 95 | | false
72 | | } 96 | | }
73 | | } 97 | | }
| |_^ ...ending here | |_^ ...ending here
error: item `HasWrongIsEmpty` has a public `len` method but no corresponding `is_empty` method 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... | _^ starting here...
95 | | pub fn len(self: &Self) -> isize { 119 | | pub fn len(self: &Self) -> isize {
96 | | 1 120 | | 1
97 | | } 121 | | }
98 | | 122 | |
99 | | pub fn is_empty(self: &Self, x : u32) -> bool { 123 | | pub fn is_empty(self: &Self, x : u32) -> bool {
100 | | false 124 | | false
101 | | } 125 | | }
102 | | } 126 | | }
| |_^ ...ending here | |_^ ...ending here
error: length comparison to zero 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 note: lint level defined here
@ -69,45 +69,45 @@ help: consider using `is_empty`
| if x.is_empty() { | if x.is_empty() {
error: length comparison to zero 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` help: consider using `is_empty`
| if "".is_empty() { | if "".is_empty() {
error: length comparison to zero 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` help: consider using `is_empty`
| if has_is_empty.is_empty() { | if has_is_empty.is_empty() {
error: length comparison to zero 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` help: consider using `is_empty`
| if !has_is_empty.is_empty() { | if !has_is_empty.is_empty() {
error: length comparison to zero 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` help: consider using `is_empty`
| if !has_is_empty.is_empty() { | if !has_is_empty.is_empty() {
error: length comparison to zero 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` help: consider using `is_empty`