//@ run-rustfix

#[allow(unused)]
use std::fmt::Debug;
// Rustfix should add this, or use `std::fmt::Debug` instead.

#[allow(dead_code)]
fn test_impl(t: impl Sized + std::fmt::Debug) {
    println!("{:?}", t);
    //~^ ERROR doesn't implement
}

#[allow(dead_code)]
fn test_no_bounds<T: std::fmt::Debug>(t: T) {
    println!("{:?}", t);
    //~^ ERROR doesn't implement
}

#[allow(dead_code)]
fn test_one_bound<T: Sized + std::fmt::Debug>(t: T) {
    println!("{:?}", t);
    //~^ ERROR doesn't implement
}

#[allow(dead_code)]
fn test_no_bounds_where<X, Y>(x: X, y: Y) where X: std::fmt::Debug, Y: std::fmt::Debug {
    println!("{:?} {:?}", x, y);
    //~^ ERROR doesn't implement
}

#[allow(dead_code)]
fn test_one_bound_where<X>(x: X) where X: Sized + std::fmt::Debug {
    println!("{:?}", x);
    //~^ ERROR doesn't implement
}

#[allow(dead_code)]
fn test_many_bounds_where<X>(x: X) where X: Sized + std::fmt::Debug, X: Sized {
    println!("{:?}", x);
    //~^ ERROR doesn't implement
}

#[allow(dead_code)]
trait Foo<T>: Sized {
    const SIZE: usize = core::mem::size_of::<Self>();
    //~^ ERROR the size for values of type `Self` cannot be known at compilation time
}

#[allow(dead_code)]
trait Bar: std::fmt::Display + Sized {
    const SIZE: usize = core::mem::size_of::<Self>();
    //~^ ERROR the size for values of type `Self` cannot be known at compilation time
}

#[allow(dead_code)]
trait Baz: Sized where Self: std::fmt::Display {
    const SIZE: usize = core::mem::size_of::<Self>();
    //~^ ERROR the size for values of type `Self` cannot be known at compilation time
}

#[allow(dead_code)]
trait Qux<T>: Sized where Self: std::fmt::Display {
    const SIZE: usize = core::mem::size_of::<Self>();
    //~^ ERROR the size for values of type `Self` cannot be known at compilation time
}

#[allow(dead_code)]
trait Bat<T>: std::fmt::Display + Sized {
    const SIZE: usize = core::mem::size_of::<Self>();
    //~^ ERROR the size for values of type `Self` cannot be known at compilation time
}

fn main() { }
