blob: 0621f966ad1111325e0954aa9034f4d4f91d5e6c [file] [log] [blame]
#![warn(clippy::pointer_format)]
use core::fmt::Debug;
use core::marker::PhantomData;
#[derive(Debug)]
struct ContainsPointerDeep {
w: WithPointer,
}
struct ManualDebug {
ptr: *const u8,
}
#[derive(Debug)]
struct WithPointer {
len: usize,
ptr: *const u8,
}
impl std::fmt::Debug for ManualDebug {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str("ManualDebug")
}
}
trait Foo {
type Assoc: Foo + Debug;
}
#[derive(Debug)]
struct S<T: Foo + 'static>(&'static S<T::Assoc>, PhantomData<T>);
#[allow(unused)]
fn unbounded<T: Foo + Debug + 'static>(s: &S<T>) {
format!("{s:?}");
}
fn main() {
let m = &(main as fn());
let g = &0;
let o = &format!("{m:p}");
//~^ pointer_format
let _ = format!("{m:?}");
//~^ pointer_format
println!("{g:p}");
//~^ pointer_format
panic!("{o:p}");
//~^ pointer_format
let answer = 42;
let x = &raw const answer;
let arr = [0u8; 8];
let with_ptr = WithPointer { len: 8, ptr: &arr as _ };
let _ = format!("{x:?}");
//~^ pointer_format
print!("{with_ptr:?}");
//~^ pointer_format
let container = ContainsPointerDeep { w: with_ptr };
print!("{container:?}");
//~^ pointer_format
let no_pointer = "foo";
println!("{no_pointer:?}");
let manual_debug = ManualDebug { ptr: &arr as _ };
println!("{manual_debug:?}");
}