From e9360f76751b8b60ec14520d23f1edb8263963cd Mon Sep 17 00:00:00 2001 From: mcarton Date: Thu, 9 Jun 2016 23:05:48 +0200 Subject: [PATCH] Fix suggestions for `REVERSE_RANGE_LOOP` --- clippy_lints/src/loops.rs | 10 +++++++++- tests/compile-fail/for_loop.rs | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/clippy_lints/src/loops.rs b/clippy_lints/src/loops.rs index 5dcea35e5a7..5d431e47465 100644 --- a/clippy_lints/src/loops.rs +++ b/clippy_lints/src/loops.rs @@ -444,6 +444,11 @@ fn check_for_loop_reverse_range(cx: &LateContext, arg: &Expr, expr: &Expr) { if sup { let start_snippet = snippet(cx, start.span, "_"); let end_snippet = snippet(cx, end.span, "_"); + let dots = if limits == ast::RangeLimits::Closed { + "..." + } else { + ".." + }; span_lint_and_then(cx, REVERSE_RANGE_LOOP, @@ -454,7 +459,10 @@ fn check_for_loop_reverse_range(cx: &LateContext, arg: &Expr, expr: &Expr) { "consider using the following if \ you are attempting to iterate \ over this range in reverse", - format!("({}..{}).rev()", end_snippet, start_snippet)); + format!("({end}{dots}{start}).rev()", + end=end_snippet, + dots=dots, + start=start_snippet)); }); } else if eq && limits != ast::RangeLimits::Closed { // if they are equal, it's also problematic - this loop diff --git a/tests/compile-fail/for_loop.rs b/tests/compile-fail/for_loop.rs index d35beb617e0..411a4b11c17 100644 --- a/tests/compile-fail/for_loop.rs +++ b/tests/compile-fail/for_loop.rs @@ -169,7 +169,7 @@ fn main() { for i in 10...0 { //~^ERROR this range is empty so this for loop will never run //~|HELP consider - //~|SUGGESTION (0..10).rev() + //~|SUGGESTION (0...10).rev() println!("{}", i); } -- 2.44.0