| #![allow(unused, clippy::print_literal, clippy::write_literal)] |
| #![warn(clippy::print_in_format_impl)] |
| use std::fmt::{Debug, Display, Error, Formatter}; |
| //@no-rustfix |
| macro_rules! indirect { |
| () => {{ println!() }}; |
| } |
| |
| macro_rules! nested { |
| ($($tt:tt)*) => { |
| $($tt)* |
| }; |
| } |
| |
| struct Foo; |
| impl Debug for Foo { |
| fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { |
| static WORKS_WITH_NESTED_ITEMS: bool = true; |
| |
| print!("{}", 1); |
| //~^ print_in_format_impl |
| |
| println!("{}", 2); |
| //~^ print_in_format_impl |
| |
| eprint!("{}", 3); |
| //~^ print_in_format_impl |
| |
| eprintln!("{}", 4); |
| //~^ print_in_format_impl |
| |
| nested! { |
| println!("nested"); |
| //~^ print_in_format_impl |
| |
| }; |
| |
| write!(f, "{}", 5); |
| writeln!(f, "{}", 6); |
| indirect!(); |
| |
| Ok(()) |
| } |
| } |
| |
| impl Display for Foo { |
| fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { |
| print!("Display"); |
| //~^ print_in_format_impl |
| |
| write!(f, "Display"); |
| |
| Ok(()) |
| } |
| } |
| |
| struct UnnamedFormatter; |
| impl Debug for UnnamedFormatter { |
| fn fmt(&self, _: &mut Formatter) -> Result<(), Error> { |
| println!("UnnamedFormatter"); |
| //~^ print_in_format_impl |
| |
| Ok(()) |
| } |
| } |
| |
| fn main() { |
| print!("outside fmt"); |
| println!("outside fmt"); |
| eprint!("outside fmt"); |
| eprintln!("outside fmt"); |
| } |