Skip to content

Commit 2c4bca2

Browse files
committed
use span_lint_and_then
1 parent 5f794bc commit 2c4bca2

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

clippy_lints/src/unnecessary_reserve.rs

+11-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
use clippy_utils::diagnostics::span_lint;
1+
use clippy_utils::diagnostics::span_lint_and_then;
22
use clippy_utils::{match_def_path, meets_msrv, msrvs, paths, visitors::expr_visitor_no_bodies};
3+
use rustc_errors::Applicability;
34
use rustc_hir::{intravisit::Visitor, Block, ExprKind, QPath, StmtKind};
45
use rustc_lint::{LateContext, LateLintPass};
56
use rustc_middle::ty;
@@ -60,11 +61,19 @@ impl<'tcx> LateLintPass<'tcx> for UnnecessaryReserve {
6061
&& let Some(next_stmt_span) = check_extend_method(cx, block, idx, struct_calling_on)
6162
&& !next_stmt_span.from_expansion()
6263
{
63-
span_lint(
64+
span_lint_and_then(
6465
cx,
6566
UNNECESSARY_RESERVE,
6667
next_stmt_span,
6768
"this `reserve` no longer makes sense in rustc version >= 1.62",
69+
|diag| {
70+
diag.span_suggestion(
71+
semi_expr.span,
72+
"remove this line",
73+
String::new(),
74+
Applicability::MaybeIncorrect,
75+
);
76+
}
6877
);
6978
}
7079
}

tests/ui/unnecessary_reserve.stderr

+12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
error: this `reserve` no longer makes sense in rustc version >= 1.62
22
--> $DIR/unnecessary_reserve.rs:20:5
33
|
4+
LL | vec.reserve(1);
5+
| -------------- help: remove this line
46
LL | vec.extend([1]);
57
| ^^^^^^^^^^^^^^^^
68
|
@@ -9,30 +11,40 @@ LL | vec.extend([1]);
911
error: this `reserve` no longer makes sense in rustc version >= 1.62
1012
--> $DIR/unnecessary_reserve.rs:24:5
1113
|
14+
LL | vec.reserve(array.len());
15+
| ------------------------ help: remove this line
1216
LL | vec.extend(array);
1317
| ^^^^^^^^^^^^^^^^^^
1418

1519
error: this `reserve` no longer makes sense in rustc version >= 1.62
1620
--> $DIR/unnecessary_reserve.rs:29:9
1721
|
22+
LL | vec.reserve(1);
23+
| -------------- help: remove this line
1824
LL | vec.extend([1])
1925
| ^^^^^^^^^^^^^^^
2026

2127
error: this `reserve` no longer makes sense in rustc version >= 1.62
2228
--> $DIR/unnecessary_reserve.rs:49:5
2329
|
30+
LL | vec_deque.reserve(1);
31+
| -------------------- help: remove this line
2432
LL | vec_deque.extend([1]);
2533
| ^^^^^^^^^^^^^^^^^^^^^^
2634

2735
error: this `reserve` no longer makes sense in rustc version >= 1.62
2836
--> $DIR/unnecessary_reserve.rs:53:5
2937
|
38+
LL | vec_deque.reserve(array.len());
39+
| ------------------------------ help: remove this line
3040
LL | vec_deque.extend(array);
3141
| ^^^^^^^^^^^^^^^^^^^^^^^^
3242

3343
error: this `reserve` no longer makes sense in rustc version >= 1.62
3444
--> $DIR/unnecessary_reserve.rs:58:9
3545
|
46+
LL | vec_deque.reserve(1);
47+
| -------------------- help: remove this line
3648
LL | vec_deque.extend([1])
3749
| ^^^^^^^^^^^^^^^^^^^^^
3850

0 commit comments

Comments
 (0)