about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJens Hausdorf <mail@jens-hausdorf.de>2019-03-10 11:06:19 +0100
committerThiago Arrais <thiago.arrais@gmail.com>2019-07-08 13:13:01 -0300
commit6d1aaac6c373e4781f779bddf992242abb53c7c3 (patch)
tree7519bbe036ef00a83f4333a89381df415631bfdf
parent316da7eb41f2c263963fc1b74fe9bb528860817f (diff)
downloadrust-6d1aaac6c373e4781f779bddf992242abb53c7c3.tar.gz
rust-6d1aaac6c373e4781f779bddf992242abb53c7c3.zip
Avoid reporting string_lit_as_bytes for long strings
Port of @jens1o code ([b76f939][jens1o_commit])

Fixes #1208

[jens1o_commit]: https://github.com/jens1o/rust-clippy/commit/b76f939ac2efcfe24900c286b3b7713d972d9088

Co-authored-by: Thiago Arrais <thiago.arrais@gmail.com>
-rw-r--r--clippy_lints/src/strings.rs1
-rw-r--r--tests/ui/string_lit_as_bytes.fixed5
-rw-r--r--tests/ui/string_lit_as_bytes.rs5
-rw-r--r--tests/ui/string_lit_as_bytes.stderr6
4 files changed, 10 insertions, 7 deletions
diff --git a/clippy_lints/src/strings.rs b/clippy_lints/src/strings.rs
index eae464ee249..9be2d40bae1 100644
--- a/clippy_lints/src/strings.rs
+++ b/clippy_lints/src/strings.rs
@@ -173,6 +173,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for StringLitAsBytes {
                             );
                         } else if callsite == expanded
                             && lit_content.as_str().chars().all(|c| c.is_ascii())
+                            && lit_content.as_str().len() <= 32
                             && !in_macro_or_desugar(args[0].span)
                         {
                             span_lint_and_sugg(
diff --git a/tests/ui/string_lit_as_bytes.fixed b/tests/ui/string_lit_as_bytes.fixed
index a70504656d9..1922478165f 100644
--- a/tests/ui/string_lit_as_bytes.fixed
+++ b/tests/ui/string_lit_as_bytes.fixed
@@ -6,10 +6,11 @@
 fn str_lit_as_bytes() {
     let bs = b"hello there";
 
-    let bs = br###"raw string with three ### in it and some " ""###;
+    let bs = br###"raw string with 3# plus " ""###;
 
-    // no warning, because this cannot be written as a byte string literal:
+    // no warning, because these cannot be written as byte string literals:
     let ubs = "☃".as_bytes();
+    let ubs = "hello there! this is a very long string".as_bytes();
 
     let strify = stringify!(foobar).as_bytes();
 
diff --git a/tests/ui/string_lit_as_bytes.rs b/tests/ui/string_lit_as_bytes.rs
index ea8c712854b..560cbcb657b 100644
--- a/tests/ui/string_lit_as_bytes.rs
+++ b/tests/ui/string_lit_as_bytes.rs
@@ -6,10 +6,11 @@
 fn str_lit_as_bytes() {
     let bs = "hello there".as_bytes();
 
-    let bs = r###"raw string with three ### in it and some " ""###.as_bytes();
+    let bs = r###"raw string with 3# plus " ""###.as_bytes();
 
-    // no warning, because this cannot be written as a byte string literal:
+    // no warning, because these cannot be written as byte string literals:
     let ubs = "☃".as_bytes();
+    let ubs = "hello there! this is a very long string".as_bytes();
 
     let strify = stringify!(foobar).as_bytes();
 
diff --git a/tests/ui/string_lit_as_bytes.stderr b/tests/ui/string_lit_as_bytes.stderr
index f51cd71a6dc..59aaec75bd2 100644
--- a/tests/ui/string_lit_as_bytes.stderr
+++ b/tests/ui/string_lit_as_bytes.stderr
@@ -9,11 +9,11 @@ LL |     let bs = "hello there".as_bytes();
 error: calling `as_bytes()` on a string literal
   --> $DIR/string_lit_as_bytes.rs:9:14
    |
-LL |     let bs = r###"raw string with three ### in it and some " ""###.as_bytes();
-   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br###"raw string with three ### in it and some " ""###`
+LL |     let bs = r###"raw string with 3# plus " ""###.as_bytes();
+   |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `br###"raw string with 3# plus " ""###`
 
 error: calling `as_bytes()` on `include_str!(..)`
-  --> $DIR/string_lit_as_bytes.rs:16:22
+  --> $DIR/string_lit_as_bytes.rs:17:22
    |
 LL |     let includestr = include_str!("entry.rs").as_bytes();
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `include_bytes!(..)` instead: `include_bytes!("entry.rs")`