// This test ensures that the `struct.B.html` only exists in `a`:
// since `a::B` is public (and inlined too), `self::a::B` doesn't
// need to be inlined as well.

#![crate_name = "foo"]

pub mod a {
    //@ has 'foo/a/index.html'
    // Should only contain "Structs".
    //@ count - '//*[@id="main-content"]//*[@class="item-table"]' 1
    //@ has - '//*[@id="structs"]' 'Structs'
    //@ has - '//*[@id="main-content"]//a[@href="struct.A.html"]' 'A'
    //@ has - '//*[@id="main-content"]//a[@href="struct.B.html"]' 'B'
    mod b {
        pub struct B;
    }
    pub use self::b::B;
    pub struct A;
}

//@ has 'foo/index.html'
//@ !has - '//*[@id="structs"]' 'Structs'
//@ has - '//*[@id="reexports"]' 'Re-exports'
//@ has - '//*[@id="modules"]' 'Modules'
//@ has - '//*[@id="main-content"]//*[@id="reexport.A"]' 'pub use self::a::A;'
//@ has - '//*[@id="main-content"]//*[@id="reexport.B"]' 'pub use self::a::B;'
// Should only contain "Modules" and "Re-exports".
//@ count - '//*[@id="main-content"]//*[@class="item-table"]' 2
pub use self::a::{A, B};
