// This test checks different combinations of structs, enums, and unions // for the "Show Aliased Type" feature on type definition. #![crate_name = "inner_variants"] //@ aux-build:cross_crate_generic_typedef.rs extern crate cross_crate_generic_typedef; pub struct Adt; pub struct Ty; pub struct TyCtxt; pub trait Interner { type Adt; type Ty; } impl Interner for TyCtxt { type Adt = Adt; type Ty = Ty; } //@ has 'inner_variants/type.AliasTy.html' //@ count - '//*[@id="variants"]' 0 //@ count - '//*[@id="fields"]' 0 pub type AliasTy = Ty; //@ has 'inner_variants/enum.IrTyKind.html' pub enum IrTyKind { /// Doc comment for AdtKind AdtKind(I::Adt), /// and another one for TyKind TyKind(I::Adt, ::Ty), // no comment StructKind { a: A, }, #[doc(hidden)] Unspecified, } //@ has 'inner_variants/type.NearlyTyKind.html' //@ count - '//*[@id="aliased-type"]' 1 //@ count - '//*[@id="variants"]' 1 //@ count - '//*[@id="fields"]' 0 pub type NearlyTyKind = IrTyKind; //@ has 'inner_variants/type.TyKind.html' //@ count - '//*[@id="aliased-type"]' 1 //@ count - '//*[@id="variants"]' 1 //@ count - '//*[@id="fields"]' 0 //@ count - '//*[@class="variant"]' 3 //@ matches - '//pre[@class="rust item-decl"]//code' "enum TyKind" //@ has - '//pre[@class="rust item-decl"]//code/a[1]' "Adt" //@ has - '//pre[@class="rust item-decl"]//code/a[2]' "Adt" //@ has - '//pre[@class="rust item-decl"]//code/a[3]' "Ty" //@ has - '//pre[@class="rust item-decl"]//code/a[4]' "i64" pub type TyKind = IrTyKind; //@ has 'inner_variants/union.OneOr.html' pub union OneOr { pub one: i64, pub or: A, } //@ has 'inner_variants/type.OneOrF64.html' //@ count - '//*[@id="aliased-type"]' 1 //@ count - '//*[@id="variants"]' 0 //@ count - '//*[@id="fields"]' 1 //@ count - '//*[@class="structfield section-header"]' 2 //@ matches - '//pre[@class="rust item-decl"]//code' "union OneOrF64" pub type OneOrF64 = OneOr; //@ has 'inner_variants/struct.One.html' pub struct One { pub val: T, #[doc(hidden)] pub __hidden: T, __private: T, } //@ has 'inner_variants/type.OneU64.html' //@ count - '//*[@id="aliased-type"]' 1 //@ count - '//*[@id="variants"]' 0 //@ count - '//*[@id="fields"]' 1 //@ count - '//*[@class="structfield section-header"]' 1 //@ matches - '//pre[@class="rust item-decl"]//code' "struct OneU64" //@ matches - '//pre[@class="rust item-decl"]//code' "pub val" pub type OneU64 = One; //@ has 'inner_variants/struct.OnceA.html' pub struct OnceA<'a, A> { pub a: &'a A, } //@ has 'inner_variants/type.Once.html' //@ count - '//*[@id="aliased-type"]' 1 //@ count - '//*[@id="variants"]' 0 //@ count - '//*[@id="fields"]' 1 //@ matches - '//pre[@class="rust item-decl"]//code' "struct Once<'a>" //@ matches - '//pre[@class="rust item-decl"]//code' "&'a" pub type Once<'a> = OnceA<'a, i64>; //@ has 'inner_variants/struct.HighlyGenericStruct.html' pub struct HighlyGenericStruct { pub z: (A, B, C, D) } //@ has 'inner_variants/type.HighlyGenericAABB.html' //@ count - '//*[@id="aliased-type"]' 1 //@ count - '//*[@id="variants"]' 0 //@ count - '//*[@id="fields"]' 1 //@ matches - '//pre[@class="rust item-decl"]//code' "struct HighlyGenericAABB" //@ matches - '//pre[@class="rust item-decl"]//code' "pub z" pub type HighlyGenericAABB = HighlyGenericStruct; //@ has 'inner_variants/type.InlineU64.html' //@ count - '//*[@id="aliased-type"]' 1 //@ count - '//*[@id="variants"]' 0 //@ count - '//*[@id="fields"]' 1 pub use cross_crate_generic_typedef::InlineU64; //@ has 'inner_variants/type.InlineEnum.html' //@ count - '//*[@id="aliased-type"]' 1 //@ count - '//*[@id="variants"]' 1 //@ count - '//*[@id="fields"]' 0 //@ count - '//*[@class="variant"]' 2 pub type InlineEnum = cross_crate_generic_typedef::GenericEnum;