//@ build-pass
#![allow(dead_code)]
//@ pretty-expanded FIXME #23616

mod a {
    pub enum Enum<T> {
        A(T),
    }

    pub trait X {
        fn dummy(&self) { }
    }
    impl X for isize {}

    pub struct Z<'a>(Enum<&'a (dyn X + 'a)>);
    fn foo() { let x: isize = 42; let z = Z(Enum::A(&x as &dyn X)); let _ = z; }
}

mod b {
    trait X {
        fn dummy(&self) { }
    }
    impl X for isize {}
    struct Y<'a>{
        x:Option<&'a (dyn X + 'a)>,
    }

    fn bar() {
        let x: isize = 42;
        let _y = Y { x: Some(&x as &dyn X) };
    }
}

mod c {
    pub trait X { fn f(&self); }
    impl X for isize { fn f(&self) {} }
    pub struct Z<'a>(Option<&'a (dyn X + 'a)>);
    fn main() { let x: isize = 42; let z = Z(Some(&x as &dyn X)); let _ = z; }
}

pub fn main() {}
