Skip to content

Commit 9e970d7

Browse files
authored
Fix useless_conversion wrongly unmangled macros (#16171)
Closes #16165 changelog: [`useless_conversion`] fix wrongly unmangled macros
2 parents 5a37f7b + e4b8c5a commit 9e970d7

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

clippy_lints/src/useless_conversion.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,10 @@ impl<'tcx> LateLintPass<'tcx> for UselessConversion {
354354
return;
355355
}
356356

357-
let sugg = snippet(cx, recv.span, "<expr>").into_owned();
357+
let mut applicability = Applicability::MachineApplicable;
358+
let sugg = snippet_with_context(cx, recv.span, e.span.ctxt(), "<expr>", &mut applicability)
359+
.0
360+
.into_owned();
358361
span_lint_and_sugg(
359362
cx,
360363
USELESS_CONVERSION,

tests/ui/useless_conversion.fixed

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,3 +442,14 @@ fn issue14739() {
442442
let _ = R.map(|_x| 0);
443443
//~^ useless_conversion
444444
}
445+
446+
fn issue16165() {
447+
macro_rules! mac {
448+
(iter $e:expr) => {
449+
$e.iter()
450+
};
451+
}
452+
453+
for _ in mac!(iter [1, 2]) {}
454+
//~^ useless_conversion
455+
}

tests/ui/useless_conversion.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,3 +442,14 @@ fn issue14739() {
442442
let _ = R.into_iter().map(|_x| 0);
443443
//~^ useless_conversion
444444
}
445+
446+
fn issue16165() {
447+
macro_rules! mac {
448+
(iter $e:expr) => {
449+
$e.iter()
450+
};
451+
}
452+
453+
for _ in mac!(iter [1, 2]).into_iter() {}
454+
//~^ useless_conversion
455+
}

tests/ui/useless_conversion.stderr

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -389,5 +389,11 @@ error: useless conversion to the same type: `std::ops::Range<u32>`
389389
LL | let _ = R.into_iter().map(|_x| 0);
390390
| ^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `R`
391391

392-
error: aborting due to 43 previous errors
392+
error: useless conversion to the same type: `std::slice::Iter<'_, i32>`
393+
--> tests/ui/useless_conversion.rs:453:14
394+
|
395+
LL | for _ in mac!(iter [1, 2]).into_iter() {}
396+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `mac!(iter [1, 2])`
397+
398+
error: aborting due to 44 previous errors
393399

0 commit comments

Comments
 (0)