//@ check-fail

#![feature(auto_traits)]

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
}
