//~^ WARN panic message contains unused formatting placeholders
assert!(false, "{}", S);
//~^ WARN panic message is not a string literal
+ assert!(false, "{}", 123);
+ //~^ WARN panic message is not a string literal
+ assert!(false, "{:?}", Some(123));
+ //~^ WARN panic message is not a string literal
debug_assert!(false, "{}", "{{}} bla"); //~ WARN panic message contains braces
panic!("{}", C); //~ WARN panic message is not a string literal
panic!("{}", S); //~ WARN panic message is not a string literal
std::panic::panic_any(123); //~ WARN panic message is not a string literal
core::panic!("{}", &*"abc"); //~ WARN panic message is not a string literal
+ std::panic::panic_any(Some(123)); //~ WARN panic message is not a string literal
panic!("{}", concat!("{", "}")); //~ WARN panic message contains an unused formatting placeholder
panic!("{}", concat!("{", "{")); //~ WARN panic message contains braces
}
panic!("{}"); // OK
panic!(S); // OK
+
+ a(1);
+ b(1);
+ c(1);
+ d(1);
+}
+
+fn a<T: Send + 'static>(v: T) {
+ std::panic::panic_any(v); //~ WARN panic message is not a string literal
+ assert!(false, v); //~ WARN panic message is not a string literal
+}
+
+fn b<T: std::fmt::Debug + Send + 'static>(v: T) {
+ std::panic::panic_any(v); //~ WARN panic message is not a string literal
+ assert!(false, "{:?}", v); //~ WARN panic message is not a string literal
+}
+
+fn c<T: std::fmt::Display + Send + 'static>(v: T) {
+ std::panic::panic_any(v); //~ WARN panic message is not a string literal
+ assert!(false, "{}", v); //~ WARN panic message is not a string literal
+}
+
+fn d<T: std::fmt::Display + std::fmt::Debug + Send + 'static>(v: T) {
+ std::panic::panic_any(v); //~ WARN panic message is not a string literal
+ assert!(false, "{}", v); //~ WARN panic message is not a string literal
}