From 0409306bb02a73d9299410b42c9cd774a216090b Mon Sep 17 00:00:00 2001 From: Dennis Luxen Date: Sat, 4 Jun 2022 22:01:52 +0200 Subject: [PATCH] Implement support for implicit start and end --- .../src/needless_parens_on_range_literal.rs | 16 +++++++-------- .../ui/needless_parens_on_range_literal.fixed | 4 +++- tests/ui/needless_parens_on_range_literal.rs | 4 +++- .../needless_parens_on_range_literal.stderr | 20 ++++++++++++++++++- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/clippy_lints/src/needless_parens_on_range_literal.rs b/clippy_lints/src/needless_parens_on_range_literal.rs index f02323bd109e..1979810f7c4d 100644 --- a/clippy_lints/src/needless_parens_on_range_literal.rs +++ b/clippy_lints/src/needless_parens_on_range_literal.rs @@ -75,15 +75,13 @@ fn check_for_parens(cx: &LateContext<'_>, e: &Expr<'_>, is_start: bool) { impl<'tcx> LateLintPass<'tcx> for NeedlessParensOnRangeLiteral { fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) { - // if let higher::Range { start, end, limits } = &e.kind { - if let Some(higher::Range { - start: Some(start), - end: Some(end), - .. - }) = higher::Range::hir(expr) - { - check_for_parens(cx, start, true); - check_for_parens(cx, end, false); + if let Some(higher::Range { start, end, .. }) = higher::Range::hir(expr) { + if let Some(start) = start { + check_for_parens(cx, start, true); + } + if let Some(end) = end { + check_for_parens(cx, end, false); + } } } } diff --git a/tests/ui/needless_parens_on_range_literal.fixed b/tests/ui/needless_parens_on_range_literal.fixed index 7b1d09909fcc..e76189bd2a3f 100644 --- a/tests/ui/needless_parens_on_range_literal.fixed +++ b/tests/ui/needless_parens_on_range_literal.fixed @@ -6,7 +6,9 @@ fn main() { let _ = 'a'..='z'; - let _ = 'a'..='z'; + let _ = 'a'..'z'; let _ = (1.)..2.; let _ = (1.)..2.; + let _ = 'a'..; + let _ = ..'z'; } diff --git a/tests/ui/needless_parens_on_range_literal.rs b/tests/ui/needless_parens_on_range_literal.rs index 306498c0faf9..aa4bcd40065e 100644 --- a/tests/ui/needless_parens_on_range_literal.rs +++ b/tests/ui/needless_parens_on_range_literal.rs @@ -6,7 +6,9 @@ fn main() { let _ = ('a')..=('z'); - let _ = 'a'..='z'; + let _ = 'a'..('z'); let _ = (1.)..2.; let _ = (1.)..(2.); + let _ = ('a')..; + let _ = ..('z'); } diff --git a/tests/ui/needless_parens_on_range_literal.stderr b/tests/ui/needless_parens_on_range_literal.stderr index 3a646c6b22c6..e971f9cd629e 100644 --- a/tests/ui/needless_parens_on_range_literal.stderr +++ b/tests/ui/needless_parens_on_range_literal.stderr @@ -12,11 +12,29 @@ error: needless parenthesis on range literal can be removed LL | let _ = ('a')..=('z'); | ^^^^^ help: try: `'z'` +error: needless parenthesis on range literal can be removed + --> $DIR/needless_parens_on_range_literal.rs:9:18 + | +LL | let _ = 'a'..('z'); + | ^^^^^ help: try: `'z'` + error: needless parenthesis on range literal can be removed --> $DIR/needless_parens_on_range_literal.rs:11:19 | LL | let _ = (1.)..(2.); | ^^^^ help: try: `2.` -error: aborting due to 3 previous errors +error: needless parenthesis on range literal can be removed + --> $DIR/needless_parens_on_range_literal.rs:12:13 + | +LL | let _ = ('a')..; + | ^^^^^ help: try: `'a'` + +error: needless parenthesis on range literal can be removed + --> $DIR/needless_parens_on_range_literal.rs:13:15 + | +LL | let _ = ..('z'); + | ^^^^^ help: try: `'z'` + +error: aborting due to 6 previous errors