Skip to content

Commit

Permalink
fixed test
Browse files Browse the repository at this point in the history
  • Loading branch information
Valentine-Mario committed Jun 7, 2021
1 parent 27e8fb9 commit 0497dd1
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 9 deletions.
4 changes: 2 additions & 2 deletions clippy_lints/src/methods/append_instead_of_extend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ pub(super) fn check(cx: &LateContext<'_>, expr: &Expr<'_>, recv: &Expr<'_>, arg:
//check source object
if let ExprKind::MethodCall(src_method, _, [drain_vec, drain_arg], _) = &arg.kind;
if src_method.ident.as_str() == "drain";
let src_ty = cx.typeck_results().expr_ty(&drain_vec).peel_refs();
let src_ty = cx.typeck_results().expr_ty(drain_vec).peel_refs();
if is_type_diagnostic_item(cx, src_ty, sym::vec_type);
//check drain range
let src_ty_range = cx.typeck_results().expr_ty(&drain_arg).peel_refs();
let src_ty_range = cx.typeck_results().expr_ty(drain_arg).peel_refs();
if is_type_lang_item(cx, src_ty_range, LangItem::RangeFull);
let mut applicability = Applicability::MachineApplicable;
then {
Expand Down
4 changes: 2 additions & 2 deletions clippy_lints/src/methods/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1057,7 +1057,7 @@ declare_clippy_lint! {
declare_clippy_lint! {
/// **What it does:** Checks for occurrences where one vector gets extended instead of append
///
/// **Why is this bad?** Using `append` instead of `extend` is more precise and faster
/// **Why is this bad?** Using `append` instead of `extend` is more concise and faster
///
/// **Known problems:** None.
///
Expand All @@ -1075,7 +1075,7 @@ declare_clippy_lint! {
/// ```
pub APPEND_INSTEAD_OF_EXTEND,
perf,
"default lint description"
"using vec.append(&mut vec) to move the full range of a vecor to another"
}

declare_clippy_lint! {
Expand Down
22 changes: 20 additions & 2 deletions tests/ui/append_instead_of_extend.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ fn main() {

vec4.append(&mut vec3);

let mut vec10 = return_vector();
let mut vec11: std::vec::Vec<u8> = Vec::new();

vec11.append(&mut vec10);

//won't get linted it dosen't move the entire content of a vec into another
let mut test1 = vec![0u8, 10];
let mut test2: std::vec::Vec<u8> = Vec::new();
Expand All @@ -24,16 +29,29 @@ fn main() {

vec3.append(&mut vec7);



let mut vec5 = vec![0u8; 1024];
let mut vec6: std::vec::Vec<u8> = Vec::new();

vec5.extend(vec6.drain(..4));

let mut vec8 = return_vector();
let mut vec9: std::vec::Vec<u8> = Vec::new();

vec8.append(&mut vec9);

//won't get linted because it is not a vec

let mut heap = BinaryHeap::from(vec![1, 3]);
let mut heap2 = BinaryHeap::from(vec![]);
heap2.extend(heap.drain())
}

fn return_vector() -> Vec<u8> {
let mut new_vector = vec![];

for i in 1..10 {
new_vector.push(i)
}

new_vector
}
22 changes: 20 additions & 2 deletions tests/ui/append_instead_of_extend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,11 @@ fn main() {

vec4.extend(vec3.drain(..));

let mut vec10 = return_vector();
let mut vec11: std::vec::Vec<u8> = Vec::new();

vec11.extend(vec10.drain(..));

//won't get linted it dosen't move the entire content of a vec into another
let mut test1 = vec![0u8, 10];
let mut test2: std::vec::Vec<u8> = Vec::new();
Expand All @@ -24,16 +29,29 @@ fn main() {

vec3.append(&mut vec7);



let mut vec5 = vec![0u8; 1024];
let mut vec6: std::vec::Vec<u8> = Vec::new();

vec5.extend(vec6.drain(..4));

let mut vec8 = return_vector();
let mut vec9: std::vec::Vec<u8> = Vec::new();

vec8.append(&mut vec9);

//won't get linted because it is not a vec

let mut heap = BinaryHeap::from(vec![1, 3]);
let mut heap2 = BinaryHeap::from(vec![]);
heap2.extend(heap.drain())
}

fn return_vector() -> Vec<u8> {
let mut new_vector = vec![];

for i in 1..10 {
new_vector.push(i)
}

new_vector
}
8 changes: 7 additions & 1 deletion tests/ui/append_instead_of_extend.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,11 @@ error: use of `extend` instead of `append` for adding the full range of a second
LL | vec4.extend(vec3.drain(..));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `vec4.append(&mut vec3)`

error: aborting due to 2 previous errors
error: use of `extend` instead of `append` for adding the full range of a second vector
--> $DIR/append_instead_of_extend.rs:19:5
|
LL | vec11.extend(vec10.drain(..));
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `vec11.append(&mut vec10)`

error: aborting due to 3 previous errors

0 comments on commit 0497dd1

Please sign in to comment.