Skip to content

Commit 9eb1dec

Browse files
committed
unnecessary_reserve: address review comments
1 parent 374b6ed commit 9eb1dec

File tree

4 files changed

+45
-28
lines changed

4 files changed

+45
-28
lines changed

clippy_lints/src/unnecessary_reserve.rs

+8-1
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,21 @@ impl<'tcx> LateLintPass<'tcx> for UnnecessaryReserve {
6363
&& let Some(next_stmt_span) = check_extend_method(cx, block, struct_calling_on, &args_a[0])
6464
&& !next_stmt_span.from_expansion()
6565
{
66+
let stmt_span = cx
67+
.tcx
68+
.hir()
69+
.parent_id_iter(expr.hir_id)
70+
.next()
71+
.map_or(expr.span, |parent| cx.tcx.hir().span(parent));
72+
6673
span_lint_and_then(
6774
cx,
6875
UNNECESSARY_RESERVE,
6976
next_stmt_span,
7077
"unnecessary call to `reserve`",
7178
|diag| {
7279
diag.span_suggestion(
73-
expr.span,
80+
stmt_span,
7481
"remove this line",
7582
String::new(),
7683
Applicability::MaybeIncorrect,

tests/ui/unnecessary_reserve.fixed

+16-11
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ fn main() {
88
vec_reserve();
99
vec_deque_reserve();
1010
hash_map_reserve();
11-
msrv_1_62();
11+
insufficient_msrv();
1212
box_vec_reserve();
1313
}
1414

@@ -18,31 +18,36 @@ fn vec_reserve() {
1818
let array2: &[usize] = &[3, 4];
1919

2020
// do not lint - different arrays
21-
;
21+
2222
vec.extend(array2);
2323

2424
// do not lint
2525
vec.reserve(1);
2626
vec.extend([1]);
2727

28-
//// do lint
29-
;
28+
// do lint
29+
3030
vec.extend(array1);
3131

3232
// do lint
3333
{
34-
;
34+
3535
vec.extend(array1)
3636
};
3737

3838
// do not lint
39-
;
39+
4040
vec.push(1);
4141
vec.extend(array1);
4242

4343
// do not lint
4444
let mut other_vec: Vec<usize> = Vec::with_capacity(1);
45-
vec.extend([1])
45+
other_vec.extend([1]);
46+
47+
// do not lint
48+
let mut vec2: Vec<usize> = vec![];
49+
vec2.extend(array1);
50+
vec2.reserve(array1.len());
4651
}
4752

4853
fn vec_deque_reserve() {
@@ -54,7 +59,7 @@ fn vec_deque_reserve() {
5459
vec_deque.extend([1]);
5560

5661
// do lint
57-
;
62+
5863
vec_deque.extend(array);
5964

6065
// do not lint
@@ -82,8 +87,8 @@ fn hash_map_reserve() {
8287
map.extend(other_map);
8388
}
8489

85-
fn msrv_1_62() {
86-
#![clippy::msrv = "1.61"]
90+
#[clippy::msrv = "1.61"]
91+
fn insufficient_msrv() {
8792
let mut vec: Vec<usize> = vec![];
8893
let array: &[usize] = &[1, 2];
8994

@@ -104,6 +109,6 @@ fn box_vec_reserve() {
104109
let array: &[usize] = &[1, 2];
105110

106111
// do lint
107-
;
112+
108113
vec.extend(array);
109114
}

tests/ui/unnecessary_reserve.rs

+10-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ fn main() {
88
vec_reserve();
99
vec_deque_reserve();
1010
hash_map_reserve();
11-
msrv_1_62();
11+
insufficient_msrv();
1212
box_vec_reserve();
1313
}
1414

@@ -25,7 +25,7 @@ fn vec_reserve() {
2525
vec.reserve(1);
2626
vec.extend([1]);
2727

28-
//// do lint
28+
// do lint
2929
vec.reserve(array1.len());
3030
vec.extend(array1);
3131

@@ -43,7 +43,12 @@ fn vec_reserve() {
4343
// do not lint
4444
let mut other_vec: Vec<usize> = vec![];
4545
other_vec.reserve(1);
46-
vec.extend([1])
46+
other_vec.extend([1]);
47+
48+
// do not lint
49+
let mut vec2: Vec<usize> = vec![];
50+
vec2.extend(array1);
51+
vec2.reserve(array1.len());
4752
}
4853

4954
fn vec_deque_reserve() {
@@ -83,8 +88,8 @@ fn hash_map_reserve() {
8388
map.extend(other_map);
8489
}
8590

86-
fn msrv_1_62() {
87-
#![clippy::msrv = "1.61"]
91+
#[clippy::msrv = "1.61"]
92+
fn insufficient_msrv() {
8893
let mut vec: Vec<usize> = vec![];
8994
let array: &[usize] = &[1, 2];
9095

tests/ui/unnecessary_reserve.stderr

+11-11
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ LL | | let array1: &[usize] = &[1, 2];
1616
LL | | let array2: &[usize] = &[3, 4];
1717
... |
1818
LL | | vec.reserve(array1.len());
19-
| | ------------------------- help: remove this line
19+
| | -------------------------- help: remove this line
2020
... |
21-
LL | | vec.extend([1])
21+
LL | | vec2.reserve(array1.len());
2222
LL | | }
2323
| |_^
2424
|
@@ -35,9 +35,9 @@ LL | | let array1: &[usize] = &[1, 2];
3535
LL | | let array2: &[usize] = &[3, 4];
3636
... |
3737
LL | | vec.reserve(array1.len());
38-
| | ------------------------- help: remove this line
38+
| | -------------------------- help: remove this line
3939
... |
40-
LL | | vec.extend([1])
40+
LL | | vec2.reserve(array1.len());
4141
LL | | }
4242
| |_^
4343

@@ -46,7 +46,7 @@ error: unnecessary call to `reserve`
4646
|
4747
LL | / {
4848
LL | | vec.reserve(array1.len());
49-
| | ------------------------- help: remove this line
49+
| | -------------------------- help: remove this line
5050
LL | | vec.extend(array1)
5151
LL | | };
5252
| |_____^
@@ -61,9 +61,9 @@ LL | | let array1: &[usize] = &[1, 2];
6161
LL | | let array2: &[usize] = &[3, 4];
6262
... |
6363
LL | | vec.reserve(array1.len());
64-
| | ------------------------- help: remove this line
64+
| | -------------------------- help: remove this line
6565
... |
66-
LL | | vec.extend([1])
66+
LL | | vec2.reserve(array1.len());
6767
LL | | }
6868
| |_^
6969

@@ -78,30 +78,30 @@ LL | | other_vec.reserve(1);
7878
= help: to override `-D warnings` add `#[allow(clippy::reserve_after_initialization)]`
7979

8080
error: unnecessary call to `reserve`
81-
--> tests/ui/unnecessary_reserve.rs:49:24
81+
--> tests/ui/unnecessary_reserve.rs:54:24
8282
|
8383
LL | fn vec_deque_reserve() {
8484
| ________________________^
8585
LL | | let mut vec_deque: VecDeque<usize> = [1].into();
8686
LL | | let array: &[usize] = &[1, 2];
8787
... |
8888
LL | | vec_deque.reserve(array.len());
89-
| | ------------------------------ help: remove this line
89+
| | ------------------------------- help: remove this line
9090
... |
9191
LL | | vec_deque.extend([1])
9292
LL | | }
9393
| |_^
9494

9595
error: unnecessary call to `reserve`
96-
--> tests/ui/unnecessary_reserve.rs:103:22
96+
--> tests/ui/unnecessary_reserve.rs:108:22
9797
|
9898
LL | fn box_vec_reserve() {
9999
| ______________________^
100100
LL | | let mut vec: Box<Vec<usize>> = Box::default();
101101
LL | | let array: &[usize] = &[1, 2];
102102
... |
103103
LL | | vec.reserve(array.len());
104-
| | ------------------------ help: remove this line
104+
| | ------------------------- help: remove this line
105105
LL | | vec.extend(array);
106106
LL | | }
107107
| |_^

0 commit comments

Comments
 (0)