Skip to content

Commit bf21c84

Browse files
committed
Ensure deref_span is empty for Vec and String
1 parent cb86c57 commit bf21c84

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

clippy_lints/src/needless_pass_by_value.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NeedlessPassByValue {
121121

122122
// Suggestion logic
123123
let sugg = |db: &mut DiagnosticBuilder| {
124+
let deref_span = spans_need_deref.get(&defid);
124125
if_let_chain! {[
125126
match_type(cx, ty, &paths::VEC),
126127
let TyPath(QPath::Resolved(_, ref path)) = input.node,
@@ -132,20 +133,22 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for NeedlessPassByValue {
132133
db.span_suggestion(input.span,
133134
&format!("consider changing the type to `{}`", slice_ty),
134135
slice_ty);
136+
assert!(deref_span.is_none());
135137
return; // `Vec` and `String` cannot be destructured - no need for `*` suggestion
136138
}}
137139

138140
if match_type(cx, ty, &paths::STRING) {
139141
db.span_suggestion(input.span,
140142
"consider changing the type to `&str`",
141143
"&str".to_string());
144+
assert!(deref_span.is_none());
142145
return;
143146
}
144147

145148
let mut spans = vec![(input.span, format!("&{}", snippet(cx, input.span, "_")))];
146149

147150
// Suggests adding `*` to dereference the added reference.
148-
if let Some(deref_span) = spans_need_deref.get(&defid) {
151+
if let Some(deref_span) = deref_span {
149152
spans.extend(deref_span.iter().cloned()
150153
.map(|span| (span, format!("*{}", snippet(cx, span, "<expr>")))));
151154
spans.sort_by_key(|&(span, _)| span);

0 commit comments

Comments
 (0)