// Regression test for . // This test ensures that inner items (except for implementations and macros) // don't appear in documentation. //@ compile-flags: --document-private-items #![crate_name = "foo"] // @has 'foo/index.html' // Checking there is no "trait" entry. // @count - '//*[@id="main-content"]/*[@class="section-header"]' 4 // @has - '//*[@id="main-content"]/*[@class="section-header"]' 'Structs' // @has - '//*[@id="main-content"]/*[@class="section-header"]' 'Constants' // @has - '//*[@id="main-content"]/*[@class="section-header"]' 'Functions' // @has - '//*[@id="main-content"]/*[@class="section-header"]' 'Macros' // @has - '//a[@href="fn.foo.html"]' 'foo' fn foo() { fn bar() {} // @has - '//a[@class="macro"]' 'visible_macro' // @!has - '//a[@class="macro"]' 'non_visible_macro' // @has 'foo/macro.visible_macro.html' // @!has 'foo/macro.non_visible_macro.html' #[macro_export] macro_rules! visible_macro { () => {} } macro_rules! non_visible_macro { () => {} } } // @has 'foo/index.html' // @has - '//a[@href="struct.Bar.html"]' 'Bar' struct Bar; const BAR: i32 = { // @!has - '//a[@href="fn.yo.html"]' 'yo' // @!has 'foo/fn.yo.html' fn yo() {} // @!has 'foo/index.html' '//a[@href="trait.Foo.html"]' 'Foo' // @!has 'foo/trait.Foo.html' trait Foo { fn babar() {} } impl Foo for Bar {} // @has 'foo/struct.Bar.html' // @has - '//*[@id="method.foo"]/*[@class="code-header"]' 'pub(crate) fn foo()' // @count - '//*[@id="main-content"]/*[@class="section-header"]' 3 // We now check that the `Foo` trait is not documented nor visible on `Bar` page. // @has - '//*[@id="main-content"]/*[@class="section-header"]' 'Implementations' // @has - '//*[@id="main-content"]/*[@class="section-header"]' 'Auto Trait Implementations' // @has - '//*[@id="main-content"]/*[@class="section-header"]' 'Blanket Implementations' // @!has - '//*[@href="trait.Foo.html#method.babar"]/*[@class="code-header"]' 'fn babar()' impl Bar { fn foo() {} } 1 };