Skip to content

Commit

Permalink
Avoid reporting string_lit_as_bytes for long strings
Browse files Browse the repository at this point in the history
Port of @jens1o code ([b76f939][jens1o_commit])

Fixes #1208

[jens1o_commit]: jens1o@b76f939

Co-authored-by: Thiago Arrais <[email protected]>
  • Loading branch information
jens1o and thiagoarrais committed Jul 8, 2019
1 parent 316da7e commit 6d1aaac
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 7 deletions.
1 change: 1 addition & 0 deletions clippy_lints/src/strings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand Down
5 changes: 3 additions & 2 deletions tests/ui/string_lit_as_bytes.fixed
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
5 changes: 3 additions & 2 deletions tests/ui/string_lit_as_bytes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down
6 changes: 3 additions & 3 deletions tests/ui/string_lit_as_bytes.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -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")`
Expand Down

0 comments on commit 6d1aaac

Please sign in to comment.