| #![crate_name = "foo"] |
| #![feature(lazy_type_alias)] |
| #![allow(incomplete_features)] |
| |
| //! # Structs |
| //! |
| //! This header has the same name as a built-in header, |
| //! and we need to make sure they're disambiguated with |
| //! suffixes. |
| //! |
| //! Module-like headers get derived from the internal ID map, |
| //! so the *internal* one gets a suffix here. To make sure it |
| //! works right, the one in the `top-toc` needs to match the one |
| //! in the `top-doc`, and the one that's not in the `top-doc` |
| //! needs to match the one that isn't in the `top-toc`. |
| |
| //@ has foo/index.html |
| // User header |
| //@ has - '//section[@id="rustdoc-toc"]/ul[@class="block top-toc"]/li/a[@href="#structs"]' 'Structs' |
| //@ has - '//details[@class="toggle top-doc"]/div[@class="docblock"]/h2[@id="structs"]' 'Structs' |
| // Built-in header |
| //@ has - '//section[@id="rustdoc-toc"]/ul[@class="block"]/li/a[@href="#structs-1"]' 'Structs' |
| //@ has - '//section[@id="main-content"]/h2[@id="structs-1"]' 'Structs' |
| |
| /// # Fields |
| /// ## Fields |
| /// ### Fields |
| /// |
| /// The difference between struct-like headers and module-like headers |
| /// is strange, but not actually a problem as long as we're consistent. |
| |
| //@ has foo/struct.MyStruct.html |
| // User header |
| //@ has - '//section[@id="rustdoc-toc"]/ul[@class="block top-toc"]/li/a[@href="#fields-1"]' 'Fields' |
| //@ has - '//details[@class="toggle top-doc"]/div[@class="docblock"]/h2[@id="fields-1"]' 'Fields' |
| // Only one level of nesting |
| //@ count - '//section[@id="rustdoc-toc"]/ul[@class="block top-toc"]//a' 2 |
| // Built-in header |
| //@ has - '//section[@id="rustdoc-toc"]/h3/a[@href="#fields"]' 'Fields' |
| //@ has - '//section[@id="main-content"]/h2[@id="fields"]' 'Fields' |
| |
| pub struct MyStruct { |
| pub fields: i32, |
| } |