// check-fail

#![feature(auto_traits)]
#![deny(where_clauses_object_safety)]

auto trait AutoTrait {}

trait Trait {
    fn static_lifetime_bound(&self) where Self: 'static {}

    fn arg_lifetime_bound<'a>(&self, _arg: &'a ()) where Self: 'a {}

    fn autotrait_bound(&self) where Self: AutoTrait {}
}

impl Trait for () {}

fn main() {
    let trait_object = &() as &dyn Trait;
    trait_object.static_lifetime_bound();
    trait_object.arg_lifetime_bound(&());
    trait_object.autotrait_bound(); //~ ERROR: the trait bound `dyn Trait: AutoTrait` is not satisfied
}