mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-23 05:03:21 +00:00
range_plus_one suggestion should not remove braces fix
This commit is contained in:
parent
d3f78d64bd
commit
679bc32f46
2 changed files with 15 additions and 4 deletions
|
@ -4,7 +4,7 @@ use if_chain::if_chain;
|
|||
use rustc::hir::*;
|
||||
use syntax::ast::RangeLimits;
|
||||
use syntax::source_map::Spanned;
|
||||
use crate::utils::{is_integer_literal, paths, snippet, span_lint, span_lint_and_then};
|
||||
use crate::utils::{is_integer_literal, paths, snippet, span_lint, span_lint_and_then, snippet_opt};
|
||||
use crate::utils::{get_trait_def_id, higher, implements_trait, SpanlessEq};
|
||||
use crate::utils::sugg::Sugg;
|
||||
|
||||
|
@ -49,7 +49,10 @@ declare_clippy_lint! {
|
|||
/// **Why is this bad?** The code is more readable with an inclusive range
|
||||
/// like `x..=y`.
|
||||
///
|
||||
/// **Known problems:** None.
|
||||
/// **Known problems:** Will add unnecessary pair of parentheses when the
|
||||
/// expression is not wrapped in a pair but starts with a opening parenthesis
|
||||
/// and ends with a closing one.
|
||||
/// I.e: let _ = (f()+1)..(f()+1) results in let _ = ((f()+1)..(f()+1)).
|
||||
///
|
||||
/// **Example:**
|
||||
/// ```rust
|
||||
|
@ -145,9 +148,17 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Pass {
|
|||
|db| {
|
||||
let start = start.map_or("".to_owned(), |x| Sugg::hir(cx, x, "x").to_string());
|
||||
let end = Sugg::hir(cx, y, "y");
|
||||
db.span_suggestion(expr.span,
|
||||
if let Some(is_wrapped) = &snippet_opt(cx, expr.span) {
|
||||
if is_wrapped.starts_with("(") && is_wrapped.ends_with(")") {
|
||||
db.span_suggestion(expr.span,
|
||||
"use",
|
||||
format!("({}..={})", start, end));
|
||||
} else {
|
||||
db.span_suggestion(expr.span,
|
||||
"use",
|
||||
format!("{}..={}", start, end));
|
||||
}
|
||||
}
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ error: an inclusive range would be more readable
|
|||
--> $DIR/range_plus_minus_one.rs:28:13
|
||||
|
|
||||
28 | let _ = (f()+1)..(f()+1);
|
||||
| ^^^^^^^^^^^^^^^^ help: use: `(f()+1)..=f()`
|
||||
| ^^^^^^^^^^^^^^^^ help: use: `((f()+1)..=f())`
|
||||
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
|
|
Loading…
Reference in a new issue