Update all tests to comply with clippy::manual_empty_string_creations

This commit is contained in:
Guilherme-Vasconcelos 2022-08-05 20:59:50 -03:00
parent 80826c3944
commit 1bf8841479
23 changed files with 40 additions and 38 deletions

View File

@ -155,7 +155,7 @@ fn to_camel_case(name: &str) -> String {
name.split('_') name.split('_')
.map(|s| { .map(|s| {
if s.is_empty() { if s.is_empty() {
String::from("") String::new()
} else { } else {
[&s[0..1].to_uppercase(), &s[1..]].concat() [&s[0..1].to_uppercase(), &s[1..]].concat()
} }

View File

@ -192,7 +192,7 @@ fn suggested_ret(cx: &LateContext<'_>, output: &Ty<'_>) -> Option<(&'static str,
match output.kind { match output.kind {
TyKind::Tup(tys) if tys.is_empty() => { TyKind::Tup(tys) if tys.is_empty() => {
let sugg = "remove the return type"; let sugg = "remove the return type";
Some((sugg, "".into())) Some((sugg, String::new()))
}, },
_ => { _ => {
let sugg = "return the output of the future directly"; let sugg = "return the output of the future directly";

View File

@ -78,7 +78,7 @@ pub(super) fn check<'tcx>(
map_span, map_span,
String::from(if unwrap_snippet_none { "and_then" } else { "map_or" }), String::from(if unwrap_snippet_none { "and_then" } else { "map_or" }),
), ),
(expr.span.with_lo(unwrap_recv.span.hi()), String::from("")), (expr.span.with_lo(unwrap_recv.span.hi()), String::new()),
]; ];
if !unwrap_snippet_none { if !unwrap_snippet_none {

View File

@ -46,7 +46,7 @@ fn span_lint(cx: &EarlyContext<'_>, span: Span, only_one: bool) {
"these patterns are unneeded as the `..` pattern can match those elements" "these patterns are unneeded as the `..` pattern can match those elements"
}, },
if only_one { "remove it" } else { "remove them" }, if only_one { "remove it" } else { "remove them" },
"".to_string(), String::new(),
Applicability::MachineApplicable, Applicability::MachineApplicable,
); );
} }

View File

@ -130,7 +130,7 @@ impl<'tcx> LateLintPass<'tcx> for UnnecessaryWraps {
( (
ret_expr.span, ret_expr.span,
if inner_type.is_unit() { if inner_type.is_unit() {
"".to_string() String::new()
} else { } else {
snippet(cx, arg.span.source_callsite(), "..").to_string() snippet(cx, arg.span.source_callsite(), "..").to_string()
} }

View File

@ -14,31 +14,31 @@ fn is_rust_file(filename: &str) -> bool {
fn main() { fn main() {
// std::string::String and &str should trigger the lint failure with .ext12 // std::string::String and &str should trigger the lint failure with .ext12
let _ = String::from("").ends_with(".ext12"); let _ = String::new().ends_with(".ext12");
let _ = "str".ends_with(".ext12"); let _ = "str".ends_with(".ext12");
// The test struct should not trigger the lint failure with .ext12 // The test struct should not trigger the lint failure with .ext12
TestStruct {}.ends_with(".ext12"); TestStruct {}.ends_with(".ext12");
// std::string::String and &str should trigger the lint failure with .EXT12 // std::string::String and &str should trigger the lint failure with .EXT12
let _ = String::from("").ends_with(".EXT12"); let _ = String::new().ends_with(".EXT12");
let _ = "str".ends_with(".EXT12"); let _ = "str".ends_with(".EXT12");
// The test struct should not trigger the lint failure with .EXT12 // The test struct should not trigger the lint failure with .EXT12
TestStruct {}.ends_with(".EXT12"); TestStruct {}.ends_with(".EXT12");
// Should not trigger the lint failure with .eXT12 // Should not trigger the lint failure with .eXT12
let _ = String::from("").ends_with(".eXT12"); let _ = String::new().ends_with(".eXT12");
let _ = "str".ends_with(".eXT12"); let _ = "str".ends_with(".eXT12");
TestStruct {}.ends_with(".eXT12"); TestStruct {}.ends_with(".eXT12");
// Should not trigger the lint failure with .EXT123 (too long) // Should not trigger the lint failure with .EXT123 (too long)
let _ = String::from("").ends_with(".EXT123"); let _ = String::new().ends_with(".EXT123");
let _ = "str".ends_with(".EXT123"); let _ = "str".ends_with(".EXT123");
TestStruct {}.ends_with(".EXT123"); TestStruct {}.ends_with(".EXT123");
// Shouldn't fail if it doesn't start with a dot // Shouldn't fail if it doesn't start with a dot
let _ = String::from("").ends_with("a.ext"); let _ = String::new().ends_with("a.ext");
let _ = "str".ends_with("a.extA"); let _ = "str".ends_with("a.extA");
TestStruct {}.ends_with("a.ext"); TestStruct {}.ends_with("a.ext");
} }

View File

@ -8,10 +8,10 @@ LL | filename.ends_with(".rs")
= help: consider using a case-insensitive comparison instead = help: consider using a case-insensitive comparison instead
error: case-sensitive file extension comparison error: case-sensitive file extension comparison
--> $DIR/case_sensitive_file_extension_comparisons.rs:17:30 --> $DIR/case_sensitive_file_extension_comparisons.rs:17:27
| |
LL | let _ = String::from("").ends_with(".ext12"); LL | let _ = String::new().ends_with(".ext12");
| ^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^
| |
= help: consider using a case-insensitive comparison instead = help: consider using a case-insensitive comparison instead
@ -24,10 +24,10 @@ LL | let _ = "str".ends_with(".ext12");
= help: consider using a case-insensitive comparison instead = help: consider using a case-insensitive comparison instead
error: case-sensitive file extension comparison error: case-sensitive file extension comparison
--> $DIR/case_sensitive_file_extension_comparisons.rs:24:30 --> $DIR/case_sensitive_file_extension_comparisons.rs:24:27
| |
LL | let _ = String::from("").ends_with(".EXT12"); LL | let _ = String::new().ends_with(".EXT12");
| ^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^
| |
= help: consider using a case-insensitive comparison instead = help: consider using a case-insensitive comparison instead

View File

@ -33,7 +33,7 @@ fn main() {
format!("foo {}", "bar"); format!("foo {}", "bar");
format!("{} bar", "foo"); format!("{} bar", "foo");
let arg: String = "".to_owned(); let arg = String::new();
arg.to_string(); arg.to_string();
format!("{:?}", arg); // Don't warn about debug. format!("{:?}", arg); // Don't warn about debug.
format!("{:8}", arg); format!("{:8}", arg);

View File

@ -35,7 +35,7 @@ fn main() {
format!("foo {}", "bar"); format!("foo {}", "bar");
format!("{} bar", "foo"); format!("{} bar", "foo");
let arg: String = "".to_owned(); let arg = String::new();
format!("{}", arg); format!("{}", arg);
format!("{:?}", arg); // Don't warn about debug. format!("{:?}", arg); // Don't warn about debug.
format!("{:8}", arg); format!("{:8}", arg);

View File

@ -68,7 +68,7 @@ fn main() {
&x; &x;
x; x;
let mut a = A("".into()); let mut a = A(String::new());
let b = a << 0; // no error: non-integer let b = a << 0; // no error: non-integer
1 * Meter; // no error: non-integer 1 * Meter; // no error: non-integer

View File

@ -68,7 +68,7 @@ fn main() {
&x >> 0; &x >> 0;
x >> &0; x >> &0;
let mut a = A("".into()); let mut a = A(String::new());
let b = a << 0; // no error: non-integer let b = a << 0; // no error: non-integer
1 * Meter; // no error: non-integer 1 * Meter; // no error: non-integer

View File

@ -7,7 +7,7 @@ macro_rules! create_strings_from_macro {
($some_str:expr) => { ($some_str:expr) => {
let _: String = $some_str.into(); let _: String = $some_str.into();
let _ = $some_str.to_string(); let _ = $some_str.to_string();
} };
} }
fn main() { fn main() {

View File

@ -90,8 +90,8 @@ fn or_fun_call() {
let mut btree_vec = BTreeMap::<u64, Vec<i32>>::new(); let mut btree_vec = BTreeMap::<u64, Vec<i32>>::new();
btree_vec.entry(42).or_insert(vec![]); btree_vec.entry(42).or_insert(vec![]);
let stringy = Some(String::from("")); let stringy = Some(String::new());
let _ = stringy.unwrap_or_else(|| "".to_owned()); let _ = stringy.unwrap_or_default();
let opt = Some(1); let opt = Some(1);
let hello = "Hello"; let hello = "Hello";

View File

@ -90,8 +90,8 @@ fn or_fun_call() {
let mut btree_vec = BTreeMap::<u64, Vec<i32>>::new(); let mut btree_vec = BTreeMap::<u64, Vec<i32>>::new();
btree_vec.entry(42).or_insert(vec![]); btree_vec.entry(42).or_insert(vec![]);
let stringy = Some(String::from("")); let stringy = Some(String::new());
let _ = stringy.unwrap_or("".to_owned()); let _ = stringy.unwrap_or(String::new());
let opt = Some(1); let opt = Some(1);
let hello = "Hello"; let hello = "Hello";

View File

@ -66,11 +66,11 @@ error: use of `unwrap_or` followed by a function call
LL | without_default.unwrap_or(Foo::new()); LL | without_default.unwrap_or(Foo::new());
| ^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(Foo::new)` | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(Foo::new)`
error: use of `unwrap_or` followed by a function call error: use of `unwrap_or` followed by a call to `new`
--> $DIR/or_fun_call.rs:94:21 --> $DIR/or_fun_call.rs:94:21
| |
LL | let _ = stringy.unwrap_or("".to_owned()); LL | let _ = stringy.unwrap_or(String::new());
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".to_owned())` | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_default()`
error: use of `unwrap_or` followed by a function call error: use of `unwrap_or` followed by a function call
--> $DIR/or_fun_call.rs:102:21 --> $DIR/or_fun_call.rs:102:21

View File

@ -7,13 +7,13 @@ extern crate macro_rules;
#[allow(clippy::string_add_assign, unused)] #[allow(clippy::string_add_assign, unused)]
fn main() { fn main() {
// ignores assignment distinction // ignores assignment distinction
let mut x = "".to_owned(); let mut x = String::new();
for _ in 1..3 { for _ in 1..3 {
x = x + "."; x = x + ".";
} }
let y = "".to_owned(); let y = String::new();
let z = y + "..."; let z = y + "...";
assert_eq!(&x, &z); assert_eq!(&x, &z);

View File

@ -4,13 +4,13 @@
#[warn(clippy::string_add_assign)] #[warn(clippy::string_add_assign)]
fn main() { fn main() {
// ignores assignment distinction // ignores assignment distinction
let mut x = "".to_owned(); let mut x = String::new();
for _ in 1..3 { for _ in 1..3 {
x += "."; x += ".";
} }
let y = "".to_owned(); let y = String::new();
let z = y + "..."; let z = y + "...";
assert_eq!(&x, &z); assert_eq!(&x, &z);

View File

@ -4,13 +4,13 @@
#[warn(clippy::string_add_assign)] #[warn(clippy::string_add_assign)]
fn main() { fn main() {
// ignores assignment distinction // ignores assignment distinction
let mut x = "".to_owned(); let mut x = String::new();
for _ in 1..3 { for _ in 1..3 {
x = x + "."; x = x + ".";
} }
let y = "".to_owned(); let y = String::new();
let z = y + "..."; let z = y + "...";
assert_eq!(&x, &z); assert_eq!(&x, &z);

View File

@ -12,6 +12,7 @@ fn main() {
ref_str_argument(""); ref_str_argument("");
// should be linted // should be linted
#[allow(clippy::manual_empty_string_creations)]
ref_str_argument(""); ref_str_argument("");
// should not be linted // should not be linted

View File

@ -12,6 +12,7 @@ fn main() {
ref_str_argument(&String::new()); ref_str_argument(&String::new());
// should be linted // should be linted
#[allow(clippy::manual_empty_string_creations)]
ref_str_argument(&String::from("")); ref_str_argument(&String::from(""));
// should not be linted // should not be linted

View File

@ -7,7 +7,7 @@ LL | ref_str_argument(&String::new());
= note: `-D clippy::unnecessary-owned-empty-strings` implied by `-D warnings` = note: `-D clippy::unnecessary-owned-empty-strings` implied by `-D warnings`
error: usage of `&String::from("")` for a function expecting a `&str` argument error: usage of `&String::from("")` for a function expecting a `&str` argument
--> $DIR/unnecessary_owned_empty_strings.rs:15:22 --> $DIR/unnecessary_owned_empty_strings.rs:16:22
| |
LL | ref_str_argument(&String::from("")); LL | ref_str_argument(&String::from(""));
| ^^^^^^^^^^^^^^^^^ help: try: `""` | ^^^^^^^^^^^^^^^^^ help: try: `""`

View File

@ -29,10 +29,10 @@ fn main() {
let _ = String::try_from("foo".to_string()).unwrap(); let _ = String::try_from("foo".to_string()).unwrap();
let _ = String::try_from(format!("A: {:04}", 123)).unwrap(); let _ = String::try_from(format!("A: {:04}", 123)).unwrap();
let _: String = format!("Hello {}", "world").try_into().unwrap(); let _: String = format!("Hello {}", "world").try_into().unwrap();
let _: String = "".to_owned().try_into().unwrap(); let _: String = String::new().try_into().unwrap();
let _: String = match String::from("_").try_into() { let _: String = match String::from("_").try_into() {
Ok(a) => a, Ok(a) => a,
Err(_) => "".into(), Err(_) => String::new(),
}; };
// FIXME this is a false negative // FIXME this is a false negative
#[allow(clippy::cmp_owned)] #[allow(clippy::cmp_owned)]

View File

@ -62,7 +62,7 @@ LL | let _: String = format!("Hello {}", "world").try_into().unwrap();
error: useless conversion to the same type: `std::string::String` error: useless conversion to the same type: `std::string::String`
--> $DIR/useless_conversion_try.rs:32:21 --> $DIR/useless_conversion_try.rs:32:21
| |
LL | let _: String = "".to_owned().try_into().unwrap(); LL | let _: String = String::new().try_into().unwrap();
| ^^^^^^^^^^^^^^^^^^^^^^^^ | ^^^^^^^^^^^^^^^^^^^^^^^^
| |
= help: consider removing `.try_into()` = help: consider removing `.try_into()`