Files
rust/tests/ui/format.fixed

106 lines
2.7 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#![warn(clippy::useless_format)]
#![allow(
clippy::print_literal,
clippy::redundant_clone,
clippy::to_string_in_format_args,
clippy::needless_borrow,
clippy::uninlined_format_args,
clippy::needless_raw_string_hashes,
clippy::useless_vec,
clippy::literal_string_with_formatting_args
)]
struct Foo(pub String);
macro_rules! foo {
($($t:tt)*) => (Foo(format!($($t)*)))
}
fn main() {
"foo".to_string();
//~^ useless_format
"{}".to_string();
//~^ useless_format
"{} abc {}".to_string();
//~^ useless_format
r##"foo {}
" bar"##.to_string();
let _ = String::new();
//~^ useless_format
"foo".to_string();
//~^ useless_format
format!("{:?}", "foo"); // Don't warn about `Debug`.
format!("{:8}", "foo");
format!("{:width$}", "foo", width = 8);
format!("foo {}", "bar");
format!("{} bar", "foo");
let arg = String::new();
arg.to_string();
//~^ useless_format
format!("{:?}", arg); // Don't warn about debug.
format!("{:8}", arg);
format!("{:width$}", arg, width = 8);
format!("foo {}", arg);
format!("{} bar", arg);
// We dont want to warn for non-string args; see issue #697.
format!("{}", 42);
format!("{:?}", 42);
format!("{:+}", 42);
format!("foo {}", 42);
format!("{} bar", 42);
// We only want to warn about `format!` itself.
println!("foo");
println!("{}", "foo");
println!("foo {}", "foo");
println!("{}", 42);
println!("foo {}", 42);
// A `format!` inside a macro should not trigger a warning.
foo!("should not warn");
// Precision on string means slicing without panicking on size.
format!("{:.1}", "foo"); // Could be `"foo"[..1]`
format!("{:.10}", "foo"); // Could not be `"foo"[..10]`
format!("{:.prec$}", "foo", prec = 1);
format!("{:.prec$}", "foo", prec = 10);
42.to_string();
//~^ useless_format
let x = std::path::PathBuf::from("/bar/foo/qux");
x.display().to_string();
//~^ useless_format
// False positive
let a = "foo".to_string();
let _ = Some(a + "bar");
//~^ useless_format
// Wrap it with braces
let v: Vec<String> = vec!["foo".to_string(), "bar".to_string()];
let _s: String = (&*v.join("\n")).to_string();
//~^ useless_format
format!("prepend {:+}", "s");
// Issue #8290
let x = "foo";
let _ = x.to_string();
//~^ useless_format
let _ = format!("{x:?}"); // Don't lint on debug
let _ = x.to_string();
//~^ useless_format
// Issue #9234
let abc = "abc";
let _ = abc.to_string();
//~^ useless_format
let xx = "xx";
let _ = xx.to_string();
//~^ useless_format
}