diff options
| author | Jens Hausdorf <mail@jens-hausdorf.de> | 2019-03-10 11:06:19 +0100 |
|---|---|---|
| committer | Thiago Arrais <thiago.arrais@gmail.com> | 2019-07-08 13:13:01 -0300 |
| commit | 6d1aaac6c373e4781f779bddf992242abb53c7c3 (patch) | |
| tree | 7519bbe036ef00a83f4333a89381df415631bfdf | |
| parent | 316da7eb41f2c263963fc1b74fe9bb528860817f (diff) | |
| download | rust-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.rs | 1 | ||||
| -rw-r--r-- | tests/ui/string_lit_as_bytes.fixed | 5 | ||||
| -rw-r--r-- | tests/ui/string_lit_as_bytes.rs | 5 | ||||
| -rw-r--r-- | tests/ui/string_lit_as_bytes.stderr | 6 |
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")` |
