Add rustdoc tests for generic const items

This commit is contained in:
León Orell Valerian Liehr 2023-07-10 03:10:24 +02:00
parent 55aba32ac5
commit 203d400668
No known key found for this signature in database
GPG Key ID: D17A07215F68E713
3 changed files with 86 additions and 0 deletions

View File

@ -0,0 +1,38 @@
#![feature(generic_const_items)]
#![allow(incomplete_features)]
// @has 'generic_const_items/constant.K.html'
// @has - '//*[@class="rust item-decl"]//code' \
// "pub const K<'a, T: 'a + Copy, const N: usize>: Option<[T; N]> \
// where \
// String: From<T>;"
pub const K<'a, T: 'a + Copy, const N: usize>: Option<[T; N]> = None
where
String: From<T>;
// @has generic_const_items/trait.Trait.html
pub trait Trait<T: ?Sized> {
// @has - '//*[@id="associatedconstant.C"]' \
// "const C<'a>: &'a T \
// where \
// T: 'a + Eq"
const C<'a>: &'a T
where
T: 'a + Eq;
}
pub struct Implementor;
// @has generic_const_items/struct.Implementor.html
// @has - '//h3[@class="code-header"]' 'impl Trait<str> for Implementor'
impl Trait<str> for Implementor {
// @has - '//*[@id="associatedconstant.C"]' \
// "const C<'a>: &'a str = \"C\" \
// where \
// str: 'a"
const C<'a>: &'a str = "C"
// In real code we could've left off this bound but adding it explicitly allows us to test if
// we render where-clauses on associated consts inside impl blocks correctly.
where
str: 'a;
}

View File

@ -0,0 +1,22 @@
#![feature(generic_const_items)]
#![allow(incomplete_features)]
pub const K<'a, T: 'a + Copy, const N: usize>: Option<[T; N]> = None
where
String: From<T>;
pub trait Trait<T: ?Sized> {
const C<'a>: &'a T
where
T: 'a + Eq;
}
pub struct Implementor;
impl Trait<str> for Implementor {
const C<'a>: &'a str = "C"
// In real code we could've left off this bound but adding it explicitly allows us to test if
// we render where-clauses on associated consts inside impl blocks correctly.
where
str: 'a;
}

View File

@ -0,0 +1,26 @@
#![crate_name = "user"]
// aux-crate:generic_const_items=generic-const-items.rs
// edition:2021
// @has 'user/constant.K.html'
// @has - '//*[@class="rust item-decl"]//code' \
// "pub const K<'a, T: 'a + Copy, const N: usize>: Option<[T; N]> \
// where \
// String: From<T>;"
pub use generic_const_items::K;
// @has user/trait.Trait.html
// @has - '//*[@id="associatedconstant.C"]' \
// "const C<'a>: &'a T \
// where \
// T: 'a + Eq"
pub use generic_const_items::Trait;
// @has user/struct.Implementor.html
// @has - '//h3[@class="code-header"]' 'impl Trait<str> for Implementor'
// @has - '//*[@id="associatedconstant.C"]' \
// "const C<'a>: &'a str = \"C\" \
// where \
// str: 'a"
pub use generic_const_items::Implementor;