//@ run-rustfix

pub trait Trait {}

pub struct Foo;

impl Trait for Foo {}

fn foo<'x, P>(
    _post: P,
    x: &'x Foo,
) -> &'x impl Trait {
    x
}

pub fn bar<'t, T: 't>(
    //~^ HELP: consider adding an explicit lifetime bound
    post: T,
    x: &'t Foo,
) -> &'t impl Trait {
    foo(post, x)
    //~^ ERROR: the parameter type `T` may not live long enough
}

fn main() {}
