Skip to content

Commit

Permalink
Add rustdoc tests for generic const items
Browse files Browse the repository at this point in the history
  • Loading branch information
fmease committed Jul 28, 2023
1 parent 55aba32 commit 203d400
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 0 deletions.
38 changes: 38 additions & 0 deletions tests/rustdoc/generic-const-items.rs
Original file line number Diff line number Diff line change
@@ -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;
}
22 changes: 22 additions & 0 deletions tests/rustdoc/inline_cross/auxiliary/generic-const-items.rs
Original file line number Diff line number Diff line change
@@ -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;
}
26 changes: 26 additions & 0 deletions tests/rustdoc/inline_cross/generic-const-items.rs
Original file line number Diff line number Diff line change
@@ -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;

0 comments on commit 203d400

Please sign in to comment.