diff options
Diffstat (limited to '')
-rw-r--r-- | tests/rustdoc/const-generics/add-impl.rs (renamed from src/test/rustdoc/const-generics/add-impl.rs) | 2 | ||||
-rw-r--r-- | tests/rustdoc/const-generics/auxiliary/extern_crate.rs (renamed from src/test/rustdoc/const-generics/auxiliary/extern_crate.rs) | 0 | ||||
-rw-r--r-- | tests/rustdoc/const-generics/const-generic-defaults.rs | 5 | ||||
-rw-r--r-- | tests/rustdoc/const-generics/const-generic-slice.rs (renamed from src/test/rustdoc/const-generics/const-generic-slice.rs) | 0 | ||||
-rw-r--r-- | tests/rustdoc/const-generics/const-generics-docs.rs | 128 | ||||
-rw-r--r-- | tests/rustdoc/const-generics/const-impl.rs (renamed from src/test/rustdoc/const-generics/const-impl.rs) | 2 | ||||
-rw-r--r-- | tests/rustdoc/const-generics/generic_const_exprs.rs (renamed from src/test/rustdoc/const-generics/generic_const_exprs.rs) | 2 | ||||
-rw-r--r-- | tests/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs (renamed from src/test/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs) | 0 | ||||
-rw-r--r-- | tests/rustdoc/const-generics/type-alias.rs | 4 |
9 files changed, 140 insertions, 3 deletions
diff --git a/src/test/rustdoc/const-generics/add-impl.rs b/tests/rustdoc/const-generics/add-impl.rs index 6cbae9abe..b5226ad3f 100644 --- a/src/test/rustdoc/const-generics/add-impl.rs +++ b/tests/rustdoc/const-generics/add-impl.rs @@ -2,7 +2,7 @@ use std::ops::Add; -// @has foo/struct.Simd.html '//pre[@class="rust struct"]' 'pub struct Simd<T, const WIDTH: usize>' +// @has foo/struct.Simd.html '//div[@class="item-decl"]/pre[@class="rust"]' 'pub struct Simd<T, const WIDTH: usize>' pub struct Simd<T, const WIDTH: usize> { inner: T, } diff --git a/src/test/rustdoc/const-generics/auxiliary/extern_crate.rs b/tests/rustdoc/const-generics/auxiliary/extern_crate.rs index 55b632a48..55b632a48 100644 --- a/src/test/rustdoc/const-generics/auxiliary/extern_crate.rs +++ b/tests/rustdoc/const-generics/auxiliary/extern_crate.rs diff --git a/tests/rustdoc/const-generics/const-generic-defaults.rs b/tests/rustdoc/const-generics/const-generic-defaults.rs new file mode 100644 index 000000000..acc3b853e --- /dev/null +++ b/tests/rustdoc/const-generics/const-generic-defaults.rs @@ -0,0 +1,5 @@ +#![crate_name = "foo"] + +// @has foo/struct.Foo.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub struct Foo<const M: usize = 10, const N: usize = M, T = i32>(_);' +pub struct Foo<const M: usize = 10, const N: usize = M, T = i32>(T); diff --git a/src/test/rustdoc/const-generics/const-generic-slice.rs b/tests/rustdoc/const-generics/const-generic-slice.rs index 4279de91f..4279de91f 100644 --- a/src/test/rustdoc/const-generics/const-generic-slice.rs +++ b/tests/rustdoc/const-generics/const-generic-slice.rs diff --git a/tests/rustdoc/const-generics/const-generics-docs.rs b/tests/rustdoc/const-generics/const-generics-docs.rs new file mode 100644 index 000000000..543332d2c --- /dev/null +++ b/tests/rustdoc/const-generics/const-generics-docs.rs @@ -0,0 +1,128 @@ +// edition:2018 +// aux-build: extern_crate.rs +#![crate_name = "foo"] + +extern crate extern_crate; +// @has foo/fn.extern_fn.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub fn extern_fn<const N: usize>() -> impl Iterator<Item = [u8; N]>' +pub use extern_crate::extern_fn; +// @has foo/struct.ExternTy.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub struct ExternTy<const N: usize> {' +pub use extern_crate::ExternTy; +// @has foo/type.TyAlias.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'type TyAlias<const N: usize> = ExternTy<N>;' +pub use extern_crate::TyAlias; +// @has foo/trait.WTrait.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub trait WTrait<const N: usize, const M: usize>' +// @has - '//div[@class="item-decl"]/pre[@class="rust"]' 'fn hey<const P: usize>() -> usize' +pub use extern_crate::WTrait; + +// @has foo/trait.Trait.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub trait Trait<const N: usize>' +// @has - '//*[@id="impl-Trait%3C1%3E-for-u8"]//h3[@class="code-header"]' 'impl Trait<1> for u8' +// @has - '//*[@id="impl-Trait%3C2%3E-for-u8"]//h3[@class="code-header"]' 'impl Trait<2> for u8' +// @has - '//*[@id="impl-Trait%3C{1%20+%202}%3E-for-u8"]//h3[@class="code-header"]' 'impl Trait<{1 + 2}> for u8' +// @has - '//*[@id="impl-Trait%3CN%3E-for-%5Bu8%3B%20N%5D"]//h3[@class="code-header"]' \ +// 'impl<const N: usize> Trait<N> for [u8; N]' +pub trait Trait<const N: usize> {} +impl Trait<1> for u8 {} +impl Trait<2> for u8 {} +impl Trait<{1 + 2}> for u8 {} +impl<const N: usize> Trait<N> for [u8; N] {} + +// @has foo/struct.Foo.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub struct Foo<const N: usize>where u8: Trait<N>' +pub struct Foo<const N: usize> where u8: Trait<N>; +// @has foo/struct.Bar.html '//div[@class="item-decl"]/pre[@class="rust"]' 'pub struct Bar<T, const N: usize>(_)' +pub struct Bar<T, const N: usize>([T; N]); + +// @has foo/struct.Foo.html '//*[@id="impl-Foo%3CM%3E"]/h3[@class="code-header"]' 'impl<const M: usize> Foo<M>where u8: Trait<M>' +impl<const M: usize> Foo<M> where u8: Trait<M> { + // @has - '//*[@id="associatedconstant.FOO_ASSOC"]' 'pub const FOO_ASSOC: usize' + pub const FOO_ASSOC: usize = M + 13; + + // @has - '//*[@id="method.hey"]' 'pub fn hey<const N: usize>(&self) -> Bar<u8, N>' + pub fn hey<const N: usize>(&self) -> Bar<u8, N> { + Bar([0; N]) + } +} + +// @has foo/struct.Bar.html '//*[@id="impl-Bar%3Cu8%2C%20M%3E"]/h3[@class="code-header"]' 'impl<const M: usize> Bar<u8, M>' +impl<const M: usize> Bar<u8, M> { + // @has - '//*[@id="method.hey"]' \ + // 'pub fn hey<const N: usize>(&self) -> Foo<N>where u8: Trait<N>' + pub fn hey<const N: usize>(&self) -> Foo<N> where u8: Trait<N> { + Foo + } +} + +// @has foo/fn.test.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub fn test<const N: usize>() -> impl Trait<N>where u8: Trait<N>' +pub fn test<const N: usize>() -> impl Trait<N> where u8: Trait<N> { + 2u8 +} + +// @has foo/fn.a_sink.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub async fn a_sink<const N: usize>(v: [u8; N]) -> impl Trait<N>' +pub async fn a_sink<const N: usize>(v: [u8; N]) -> impl Trait<N> { + v +} + +// @has foo/fn.b_sink.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub async fn b_sink<const N: usize>(_: impl Trait<N>)' +pub async fn b_sink<const N: usize>(_: impl Trait<N>) {} + +// @has foo/fn.concrete.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub fn concrete() -> [u8; 22]' +pub fn concrete() -> [u8; 3 + std::mem::size_of::<u64>() << 1] { + Default::default() +} + +// @has foo/type.Faz.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'type Faz<const N: usize> = [u8; N];' +pub type Faz<const N: usize> = [u8; N]; +// @has foo/type.Fiz.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'type Fiz<const N: usize> = [[u8; N]; 48];' +pub type Fiz<const N: usize> = [[u8; N]; 3 << 4]; + +macro_rules! define_me { + ($t:tt<$q:tt>) => { + pub struct $t<const $q: usize>([u8; $q]); + } +} + +// @has foo/struct.Foz.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub struct Foz<const N: usize>(_);' +define_me!(Foz<N>); + +trait Q { + const ASSOC: usize; +} + +impl<const N: usize> Q for [u8; N] { + const ASSOC: usize = N; +} + +// @has foo/fn.q_user.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub fn q_user() -> [u8; 13]' +pub fn q_user() -> [u8; <[u8; 13] as Q>::ASSOC] { + [0; <[u8; 13] as Q>::ASSOC] +} + +// @has foo/union.Union.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub union Union<const N: usize>' +pub union Union<const N: usize> { + // @has - //pre "pub arr: [u8; N]" + pub arr: [u8; N], + // @has - //pre "pub another_arr: [(); N]" + pub another_arr: [(); N], +} + +// @has foo/enum.Enum.html '//div[@class="item-decl"]/pre[@class="rust"]' \ +// 'pub enum Enum<const N: usize>' +pub enum Enum<const N: usize> { + // @has - //pre "Variant([u8; N])" + Variant([u8; N]), + // @has - //pre "EmptyVariant" + EmptyVariant, +} diff --git a/src/test/rustdoc/const-generics/const-impl.rs b/tests/rustdoc/const-generics/const-impl.rs index 75ee84279..726fb8f0c 100644 --- a/src/test/rustdoc/const-generics/const-impl.rs +++ b/tests/rustdoc/const-generics/const-impl.rs @@ -8,7 +8,7 @@ pub enum Order { Unsorted, } -// @has foo/struct.VSet.html '//pre[@class="rust struct"]' 'pub struct VSet<T, const ORDER: Order>' +// @has foo/struct.VSet.html '//div[@class="item-decl"]/pre[@class="rust"]' 'pub struct VSet<T, const ORDER: Order>' // @has foo/struct.VSet.html '//*[@id="impl-Send-for-VSet%3CT%2C%20ORDER%3E"]/h3[@class="code-header"]' 'impl<T, const ORDER: Order> Send for VSet<T, ORDER>' // @has foo/struct.VSet.html '//*[@id="impl-Sync-for-VSet%3CT%2C%20ORDER%3E"]/h3[@class="code-header"]' 'impl<T, const ORDER: Order> Sync for VSet<T, ORDER>' pub struct VSet<T, const ORDER: Order> { diff --git a/src/test/rustdoc/const-generics/generic_const_exprs.rs b/tests/rustdoc/const-generics/generic_const_exprs.rs index 215ee228e..c53cf6dcd 100644 --- a/src/test/rustdoc/const-generics/generic_const_exprs.rs +++ b/tests/rustdoc/const-generics/generic_const_exprs.rs @@ -2,6 +2,6 @@ #![feature(generic_const_exprs)] #![allow(incomplete_features)] // make sure that `ConstEvaluatable` predicates dont cause rustdoc to ICE #77647 -// @has foo/struct.Ice.html '//pre[@class="rust struct"]' \ +// @has foo/struct.Ice.html '//div[@class="item-decl"]/pre[@class="rust"]' \ // 'pub struct Ice<const N: usize>;' pub struct Ice<const N: usize> where [(); N + 1]:; diff --git a/src/test/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs b/tests/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs index 310e89a35..310e89a35 100644 --- a/src/test/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs +++ b/tests/rustdoc/const-generics/lazy_normalization_consts/const-equate-pred.rs diff --git a/tests/rustdoc/const-generics/type-alias.rs b/tests/rustdoc/const-generics/type-alias.rs new file mode 100644 index 000000000..72473a112 --- /dev/null +++ b/tests/rustdoc/const-generics/type-alias.rs @@ -0,0 +1,4 @@ +#![crate_name = "foo"] + +// @has foo/type.CellIndex.html '//div[@class="item-decl"]/pre[@class="rust"]' 'type CellIndex<const D: usize> = [i64; D];' +pub type CellIndex<const D: usize> = [i64; D]; |