//@ run-pass
// Test that the lifetime of the enclosing `&` is used for the object
// lifetime bound.


#![allow(dead_code, unused)]

use std::fmt::Display;

trait Test {
    fn foo(&self) { }
}

struct SomeStruct<'a> {
    t: &'a dyn Test,
    u: &'a (dyn Test+'a),
}

fn a<'a>(t: &'a dyn Test, mut ss: SomeStruct<'a>) {
    ss.t = t;
}

fn b<'a>(t: &'a dyn Test, mut ss: SomeStruct<'a>) {
    ss.u = t;
}

fn c<'a>(t: &'a (dyn Test+'a), mut ss: SomeStruct<'a>) {
    ss.t = t;
}

fn d<'a>(t: &'a (dyn Test+'a), mut ss: SomeStruct<'a>) {
    ss.u = t;
}

fn e<'a>(_: &'a (dyn Display+'static)) {}

fn main() {
    // Inside a function body, we can just infer both
    // lifetimes, to allow &'tmp (Display+'static).
    e(&0 as &dyn Display);
}
