diff options
Diffstat (limited to 'src/test/ui/macros/macro-comma-behavior-rpass.rs')
-rw-r--r-- | src/test/ui/macros/macro-comma-behavior-rpass.rs | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/src/test/ui/macros/macro-comma-behavior-rpass.rs b/src/test/ui/macros/macro-comma-behavior-rpass.rs deleted file mode 100644 index 8406b4e78..000000000 --- a/src/test/ui/macros/macro-comma-behavior-rpass.rs +++ /dev/null @@ -1,98 +0,0 @@ -// run-pass -// needs-unwind -#![allow(unused_imports)] -// Ideally, any macro call with a trailing comma should behave -// identically to a call without the comma. -// -// This checks the behavior of macros with trailing commas in key -// places where regressions in behavior seem highly possible (due -// to it being e.g., a place where the addition of an argument -// causes it to go down a code path with subtly different behavior). -// -// There is a companion failing test. - -// compile-flags: --test -C debug_assertions=yes -// revisions: std core - -#![cfg_attr(core, no_std)] - -#[cfg(core)] -use core::fmt; -#[cfg(std)] -use std::fmt; - -// an easy mistake in the implementation of 'assert!' -// would cause this to say "explicit panic" -#[test] -#[should_panic(expected = "assertion failed")] -fn assert_1arg() { - assert!(false,); -} - -// same as 'assert_1arg' -#[test] -#[should_panic(expected = "assertion failed")] -fn debug_assert_1arg() { - debug_assert!(false,); -} - -// make sure we don't accidentally forward to `write!("text")` -#[cfg(std)] -#[test] -fn writeln_1arg() { - use fmt::Write; - - let mut s = String::new(); - writeln!(&mut s,).unwrap(); - assert_eq!(&s, "\n"); -} - -// A number of format_args-like macros have special-case treatment -// for a single message string, which is not formatted. -// -// This test ensures that the addition of a trailing comma does not -// suddenly cause these strings to get formatted when they otherwise -// would not be. This is an easy mistake to make by having such a macro -// accept ", $($tok:tt)*" instead of ", $($tok:tt)+" after its minimal -// set of arguments. -// -// (Example: Issue #48042) -#[test] -#[allow(non_fmt_panics)] -fn to_format_or_not_to_format() { - // ("{}" is the easiest string to test because if this gets - // sent to format_args!, it'll simply fail to compile. - // "{{}}" is an example of an input that could compile and - // produce an incorrect program, but testing the panics - // would be burdensome.) - let falsum = || false; - - assert!(true, "{}",); - - // assert_eq!(1, 1, "{}",); // see check-fail - // assert_ne!(1, 2, "{}",); // see check-fail - - debug_assert!(true, "{}",); - - // debug_assert_eq!(1, 1, "{}",); // see check-fail - // debug_assert_ne!(1, 2, "{}",); // see check-fail - // eprint!("{}",); // see check-fail - // eprintln!("{}",); // see check-fail - // format!("{}",); // see check-fail - // format_args!("{}",); // see check-fail - - if falsum() { - panic!("{}",); - } - - // print!("{}",); // see check-fail - // println!("{}",); // see check-fail - // unimplemented!("{}",); // see check-fail - - if falsum() { - unreachable!("{}",); - } - - // write!(&mut stdout, "{}",); // see check-fail - // writeln!(&mut stdout, "{}",); // see check-fail -} |