about summary refs log tree commit diff
diff options
context:
space:
mode:
authornaosense <pingao777@gmail.com>2022-12-13 10:50:49 +0800
committernaosense <pingao777@gmail.com>2022-12-13 16:52:55 +0800
commit55fdd1e78c73b67adce581fbf09aa0a1b6f07c61 (patch)
treebd5098cdd377756780d593dea80d908278929765
parentde92da297466f974b63fb8157419c0616cbfd558 (diff)
downloadrust-55fdd1e78c73b67adce581fbf09aa0a1b6f07c61.tar.gz
rust-55fdd1e78c73b67adce581fbf09aa0a1b6f07c61.zip
replace reference with value
-rw-r--r--clippy_lints/src/manual_is_ascii_check.rs8
-rw-r--r--tests/ui/manual_is_ascii_check.fixed12
-rw-r--r--tests/ui/manual_is_ascii_check.stderr12
3 files changed, 18 insertions, 14 deletions
diff --git a/clippy_lints/src/manual_is_ascii_check.rs b/clippy_lints/src/manual_is_ascii_check.rs
index eaaaf0c6581..b1578627b50 100644
--- a/clippy_lints/src/manual_is_ascii_check.rs
+++ b/clippy_lints/src/manual_is_ascii_check.rs
@@ -3,7 +3,7 @@ use clippy_utils::{diagnostics::span_lint_and_sugg, higher, in_constant, macros:
 use rustc_ast::ast::RangeLimits;
 use rustc_ast::LitKind::{Byte, Char};
 use rustc_errors::Applicability;
-use rustc_hir::{Expr, ExprKind, PatKind, RangeEnd};
+use rustc_hir::{BorrowKind, Expr, ExprKind, PatKind, RangeEnd};
 use rustc_lint::{LateContext, LateLintPass};
 use rustc_session::{declare_tool_lint, impl_lint_pass};
 use rustc_span::{def_id::DefId, sym, Span};
@@ -86,8 +86,12 @@ impl<'tcx> LateLintPass<'tcx> for ManualIsAsciiCheck {
             && path.ident.name == sym!(contains)
             && let Some(higher::Range { start: Some(start), end: Some(end), limits: RangeLimits::Closed })
             = higher::Range::hir(receiver) {
-                let range = check_range(start, end);
+            let range = check_range(start, end);
+            if let ExprKind::AddrOf(BorrowKind::Ref, _, e) = arg.kind {
+                check_is_ascii(cx, expr.span, e, &range);
+            } else {
                 check_is_ascii(cx, expr.span, arg, &range);
+            }
         }
     }
 
diff --git a/tests/ui/manual_is_ascii_check.fixed b/tests/ui/manual_is_ascii_check.fixed
index b2f45aba59a..b5e8b9c19cb 100644
--- a/tests/ui/manual_is_ascii_check.fixed
+++ b/tests/ui/manual_is_ascii_check.fixed
@@ -16,13 +16,13 @@ fn main() {
 
     assert!(matches!('x', 'A'..='Z' | 'a'..='z' | '_'));
 
-    assert!(&b'0'.is_ascii_digit());
-    assert!(&b'a'.is_ascii_lowercase());
-    assert!(&b'A'.is_ascii_uppercase());
+    assert!(b'0'.is_ascii_digit());
+    assert!(b'a'.is_ascii_lowercase());
+    assert!(b'A'.is_ascii_uppercase());
 
-    assert!(&'0'.is_ascii_digit());
-    assert!(&'a'.is_ascii_lowercase());
-    assert!(&'A'.is_ascii_uppercase());
+    assert!('0'.is_ascii_digit());
+    assert!('a'.is_ascii_lowercase());
+    assert!('A'.is_ascii_uppercase());
 }
 
 #[clippy::msrv = "1.23"]
diff --git a/tests/ui/manual_is_ascii_check.stderr b/tests/ui/manual_is_ascii_check.stderr
index 797952a3aba..ae747d33b58 100644
--- a/tests/ui/manual_is_ascii_check.stderr
+++ b/tests/ui/manual_is_ascii_check.stderr
@@ -46,37 +46,37 @@ error: manual check for common ascii range
   --> $DIR/manual_is_ascii_check.rs:19:13
    |
 LL |     assert!((b'0'..=b'9').contains(&b'0'));
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&b'0'.is_ascii_digit()`
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `b'0'.is_ascii_digit()`
 
 error: manual check for common ascii range
   --> $DIR/manual_is_ascii_check.rs:20:13
    |
 LL |     assert!((b'a'..=b'z').contains(&b'a'));
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&b'a'.is_ascii_lowercase()`
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `b'a'.is_ascii_lowercase()`
 
 error: manual check for common ascii range
   --> $DIR/manual_is_ascii_check.rs:21:13
    |
 LL |     assert!((b'A'..=b'Z').contains(&b'A'));
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&b'A'.is_ascii_uppercase()`
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `b'A'.is_ascii_uppercase()`
 
 error: manual check for common ascii range
   --> $DIR/manual_is_ascii_check.rs:23:13
    |
 LL |     assert!(('0'..='9').contains(&'0'));
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'0'.is_ascii_digit()`
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `'0'.is_ascii_digit()`
 
 error: manual check for common ascii range
   --> $DIR/manual_is_ascii_check.rs:24:13
    |
 LL |     assert!(('a'..='z').contains(&'a'));
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a'.is_ascii_lowercase()`
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `'a'.is_ascii_lowercase()`
 
 error: manual check for common ascii range
   --> $DIR/manual_is_ascii_check.rs:25:13
    |
 LL |     assert!(('A'..='Z').contains(&'A'));
-   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'A'.is_ascii_uppercase()`
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `'A'.is_ascii_uppercase()`
 
 error: manual check for common ascii range
   --> $DIR/manual_is_ascii_check.rs:37:13