mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-27 15:11:30 +00:00
Auto merge of #3605 - phansch:small_methods_ui_test_improvement, r=flip1995
UI test cleanup: Extract iter_skip_next from methods.rs cc #2038
This commit is contained in:
commit
39bd84494f
4 changed files with 91 additions and 40 deletions
61
tests/ui/iter_skip_next.rs
Normal file
61
tests/ui/iter_skip_next.rs
Normal file
|
@ -0,0 +1,61 @@
|
|||
// Copyright 2014-2018 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![warn(clippy::iter_skip_next)]
|
||||
#![allow(clippy::blacklisted_name)]
|
||||
|
||||
/// Struct to generate false positive for Iterator-based lints
|
||||
#[derive(Copy, Clone)]
|
||||
struct IteratorFalsePositives {
|
||||
foo: u32,
|
||||
}
|
||||
|
||||
impl IteratorFalsePositives {
|
||||
fn filter(self) -> IteratorFalsePositives {
|
||||
self
|
||||
}
|
||||
|
||||
fn next(self) -> IteratorFalsePositives {
|
||||
self
|
||||
}
|
||||
|
||||
fn find(self) -> Option<u32> {
|
||||
Some(self.foo)
|
||||
}
|
||||
|
||||
fn position(self) -> Option<u32> {
|
||||
Some(self.foo)
|
||||
}
|
||||
|
||||
fn rposition(self) -> Option<u32> {
|
||||
Some(self.foo)
|
||||
}
|
||||
|
||||
fn nth(self, n: usize) -> Option<u32> {
|
||||
Some(self.foo)
|
||||
}
|
||||
|
||||
fn skip(self, _: usize) -> IteratorFalsePositives {
|
||||
self
|
||||
}
|
||||
}
|
||||
|
||||
/// Checks implementation of `ITER_SKIP_NEXT` lint
|
||||
fn iter_skip_next() {
|
||||
let mut some_vec = vec![0, 1, 2, 3];
|
||||
let _ = some_vec.iter().skip(42).next();
|
||||
let _ = some_vec.iter().cycle().skip(42).next();
|
||||
let _ = (1..10).skip(10).next();
|
||||
let _ = &some_vec[..].iter().skip(3).next();
|
||||
let foo = IteratorFalsePositives { foo: 0 };
|
||||
let _ = foo.skip(42).next();
|
||||
let _ = foo.filter().skip(42).next();
|
||||
}
|
||||
|
||||
fn main() {}
|
28
tests/ui/iter_skip_next.stderr
Normal file
28
tests/ui/iter_skip_next.stderr
Normal file
|
@ -0,0 +1,28 @@
|
|||
error: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)`
|
||||
--> $DIR/iter_skip_next.rs:52:13
|
||||
|
|
||||
LL | let _ = some_vec.iter().skip(42).next();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `-D clippy::iter-skip-next` implied by `-D warnings`
|
||||
|
||||
error: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)`
|
||||
--> $DIR/iter_skip_next.rs:53:13
|
||||
|
|
||||
LL | let _ = some_vec.iter().cycle().skip(42).next();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)`
|
||||
--> $DIR/iter_skip_next.rs:54:13
|
||||
|
|
||||
LL | let _ = (1..10).skip(10).next();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)`
|
||||
--> $DIR/iter_skip_next.rs:55:14
|
||||
|
|
||||
LL | let _ = &some_vec[..].iter().skip(3).next();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
|
@ -390,18 +390,6 @@ fn iter_nth() {
|
|||
let ok_mut = false_positive.iter_mut().nth(3);
|
||||
}
|
||||
|
||||
/// Checks implementation of `ITER_SKIP_NEXT` lint
|
||||
fn iter_skip_next() {
|
||||
let mut some_vec = vec![0, 1, 2, 3];
|
||||
let _ = some_vec.iter().skip(42).next();
|
||||
let _ = some_vec.iter().cycle().skip(42).next();
|
||||
let _ = (1..10).skip(10).next();
|
||||
let _ = &some_vec[..].iter().skip(3).next();
|
||||
let foo = IteratorFalsePositives { foo : 0 };
|
||||
let _ = foo.skip(42).next();
|
||||
let _ = foo.filter().skip(42).next();
|
||||
}
|
||||
|
||||
#[allow(clippy::similar_names)]
|
||||
fn main() {
|
||||
let opt = Some(0);
|
||||
|
|
|
@ -367,39 +367,13 @@ error: called `.iter_mut().nth()` on a VecDeque. Calling `.get_mut()` is both fa
|
|||
LL | let bad_vec_deque = some_vec_deque.iter_mut().nth(3);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)`
|
||||
--> $DIR/methods.rs:396:13
|
||||
|
|
||||
LL | let _ = some_vec.iter().skip(42).next();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `-D clippy::iter-skip-next` implied by `-D warnings`
|
||||
|
||||
error: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)`
|
||||
--> $DIR/methods.rs:397:13
|
||||
|
|
||||
LL | let _ = some_vec.iter().cycle().skip(42).next();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)`
|
||||
--> $DIR/methods.rs:398:13
|
||||
|
|
||||
LL | let _ = (1..10).skip(10).next();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)`
|
||||
--> $DIR/methods.rs:399:14
|
||||
|
|
||||
LL | let _ = &some_vec[..].iter().skip(3).next();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: used unwrap() on an Option value. If you don't want to handle the None case gracefully, consider using expect() to provide a better panic message
|
||||
--> $DIR/methods.rs:408:13
|
||||
--> $DIR/methods.rs:396:13
|
||||
|
|
||||
LL | let _ = opt.unwrap();
|
||||
| ^^^^^^^^^^^^
|
||||
|
|
||||
= note: `-D clippy::option-unwrap-used` implied by `-D warnings`
|
||||
|
||||
error: aborting due to 50 previous errors
|
||||
error: aborting due to 46 previous errors
|
||||
|
||||
|
|
Loading…
Reference in a new issue