1 // build-pass (FIXME(62277): should be check-pass)
2 // aux-build:fancy-panic.rs
4 extern crate fancy_panic;
6 const C: &str = "abc {}";
7 static S: &str = "{bla}";
9 #[allow(unreachable_code)]
11 panic!("here's a brace: {"); //~ WARN panic message contains a brace
12 std::panic!("another one: }"); //~ WARN panic message contains a brace
13 core::panic!("Hello {}"); //~ WARN panic message contains an unused formatting placeholder
14 assert!(false, "{:03x} {test} bla");
15 //~^ WARN panic message contains unused formatting placeholders
17 //~^ WARN panic message is not a string literal
18 debug_assert!(false, "{{}} bla"); //~ WARN panic message contains braces
19 panic!(C); //~ WARN panic message is not a string literal
20 panic!(S); //~ WARN panic message is not a string literal
21 std::panic!(123); //~ WARN panic message is not a string literal
22 core::panic!(&*"abc"); //~ WARN panic message is not a string literal
23 panic!(concat!("{", "}")); //~ WARN panic message contains an unused formatting placeholder
24 panic!(concat!("{", "{")); //~ WARN panic message contains braces
26 fancy_panic::fancy_panic!("test {} 123");
27 //~^ WARN panic message contains an unused formatting placeholder
29 fancy_panic::fancy_panic!(S);
30 //~^ WARN panic message is not a string literal
36 panic!(a!()); //~ WARN panic message is not a string literal
38 panic!(format!("{}", 1)); //~ WARN panic message is not a string literal
39 assert!(false, format!("{}", 1)); //~ WARN panic message is not a string literal
40 debug_assert!(false, format!("{}", 1)); //~ WARN panic message is not a string literal
42 panic![123]; //~ WARN panic message is not a string literal
43 panic!{123}; //~ WARN panic message is not a string literal
45 // Check that the lint only triggers for std::panic and core::panic,
46 // not any panic macro: