// check-pass

pub mod upstream_a {
    mod inner {
        pub struct Foo {}
        pub struct Bar {}
    }

    struct Foo;
    //~^ WARN private item shadows public glob re-export

    pub use self::inner::*;
}

pub mod upstream_b {
    mod inner {
        pub struct Foo {}
        pub struct Qux {}
    }

    mod other {
        pub struct Foo;
    }

    pub use self::inner::*;

    use self::other::Foo;
    //~^ WARN private item shadows public glob re-export
}

pub mod upstream_c {
    mod no_def_id {
        #![allow(non_camel_case_types)]
        pub struct u8;
        pub struct World;
    }

    pub use self::no_def_id::*;

    use std::primitive::u8;
    //~^ WARN private item shadows public glob re-export
}

// Downstream crate
// mod downstream {
//     fn proof() {
//         let _ = crate::upstream_a::Foo;
//         let _ = crate::upstream_b::Foo;
//     }
// }

pub fn main() {}