// run-pass

#![allow(unused_imports)]
// pretty-expanded FIXME #23616

pub use foo::bar::{self, First};
use self::bar::Second;

mod foo {
    pub use self::bar::baz::{self};

    pub mod bar {
        pub mod baz {
            pub struct Fourth;
        }
        pub struct First;
        pub struct Second;
    }

    pub struct Third;
}

mod baz {
    use super::foo::{bar, self};
    pub use foo::Third;
}

fn main() {
    let _ = First;
    let _ = Second;
    let _ = baz::Third;
    let _ = foo::baz::Fourth;
}