]> git.lizzy.rs Git - rust.git/commitdiff
add more test, limits check
authornaosense <pingao777@gmail.com>
Mon, 12 Dec 2022 10:58:02 +0000 (18:58 +0800)
committernaosense <pingao777@gmail.com>
Tue, 13 Dec 2022 08:52:55 +0000 (16:52 +0800)
clippy_lints/src/manual_is_ascii_check.rs
tests/ui/manual_is_ascii_check.fixed
tests/ui/manual_is_ascii_check.rs
tests/ui/manual_is_ascii_check.stderr

index 39e7145b479221fd8fbe86b3b950b5d5de65bf24..eaaaf0c658128ebe299812aca87d20d8604e4b1a 100644 (file)
@@ -1,5 +1,6 @@
 use clippy_utils::msrvs::{self, Msrv};
 use clippy_utils::{diagnostics::span_lint_and_sugg, higher, in_constant, macros::root_macro_call, source::snippet};
+use rustc_ast::ast::RangeLimits;
 use rustc_ast::LitKind::{Byte, Char};
 use rustc_errors::Applicability;
 use rustc_hir::{Expr, ExprKind, PatKind, RangeEnd};
@@ -83,7 +84,8 @@ fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'_>) {
             }
         } else if let ExprKind::MethodCall(path, receiver, [arg], ..) = expr.kind
             && path.ident.name == sym!(contains)
-            && let Some(higher::Range { start: Some(start), end: Some(end), .. }) = higher::Range::hir(receiver) {
+            && let Some(higher::Range { start: Some(start), end: Some(end), limits: RangeLimits::Closed })
+            = higher::Range::hir(receiver) {
                 let range = check_range(start, end);
                 check_is_ascii(cx, expr.span, arg, &range);
         }
index bfba6dd7cd8d54ce994fc9f1ca5801e918e6a41e..b2f45aba59aa1f6136c51c83bb4ce1c4b8dfe5dd 100644 (file)
@@ -15,7 +15,14 @@ fn main() {
     assert!('x'.is_ascii_alphabetic());
 
     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!(&'0'.is_ascii_digit());
+    assert!(&'a'.is_ascii_lowercase());
+    assert!(&'A'.is_ascii_uppercase());
 }
 
 #[clippy::msrv = "1.23"]
index c929f30f729eec2d94001e91283ce69c1c9722cc..7f1ee88fc7438f27edbb07ec57eb171b6eb95b5e 100644 (file)
@@ -15,7 +15,14 @@ fn main() {
     assert!(matches!('x', 'A'..='Z' | 'a'..='z'));
 
     assert!(matches!('x', 'A'..='Z' | 'a'..='z' | '_'));
+
     assert!((b'0'..=b'9').contains(&b'0'));
+    assert!((b'a'..=b'z').contains(&b'a'));
+    assert!((b'A'..=b'Z').contains(&b'A'));
+
+    assert!(('0'..='9').contains(&'0'));
+    assert!(('a'..='z').contains(&'a'));
+    assert!(('A'..='Z').contains(&'A'));
 }
 
 #[clippy::msrv = "1.23"]
index 888924f938611d28f9d2fb323bcfc628da32b318..797952a3aba5935d2c70173a31ceb9367376258d 100644 (file)
@@ -43,34 +43,64 @@ LL |     assert!(matches!('x', 'A'..='Z' | 'a'..='z'));
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `'x'.is_ascii_alphabetic()`
 
 error: manual check for common ascii range
-  --> $DIR/manual_is_ascii_check.rs:18:13
+  --> $DIR/manual_is_ascii_check.rs:19:13
    |
 LL |     assert!((b'0'..=b'9').contains(&b'0'));
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&b'0'.is_ascii_digit()`
 
 error: manual check for common ascii range
-  --> $DIR/manual_is_ascii_check.rs:30:13
+  --> $DIR/manual_is_ascii_check.rs:20:13
+   |
+LL |     assert!((b'a'..=b'z').contains(&b'a'));
+   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 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()`
+
+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()`
+
+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()`
+
+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()`
+
+error: manual check for common ascii range
+  --> $DIR/manual_is_ascii_check.rs:37:13
    |
 LL |     assert!(matches!(b'1', b'0'..=b'9'));
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `b'1'.is_ascii_digit()`
 
 error: manual check for common ascii range
-  --> $DIR/manual_is_ascii_check.rs:31:13
+  --> $DIR/manual_is_ascii_check.rs:38:13
    |
 LL |     assert!(matches!('X', 'A'..='Z'));
    |             ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `'X'.is_ascii_uppercase()`
 
 error: manual check for common ascii range
-  --> $DIR/manual_is_ascii_check.rs:32:13
+  --> $DIR/manual_is_ascii_check.rs:39:13
    |
 LL |     assert!(matches!('x', 'A'..='Z' | 'a'..='z'));
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `'x'.is_ascii_alphabetic()`
 
 error: manual check for common ascii range
-  --> $DIR/manual_is_ascii_check.rs:42:23
+  --> $DIR/manual_is_ascii_check.rs:49:23
    |
 LL |     const FOO: bool = matches!('x', '0'..='9');
    |                       ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `'x'.is_ascii_digit()`
 
-error: aborting due to 12 previous errors
+error: aborting due to 17 previous errors