rustdoc: add test for cross-crate trait-object types
as well as some FIXMEs
This commit is contained in:
parent
71561f82c3
commit
7ec50b629c
4 changed files with 52 additions and 0 deletions
|
|
@ -1683,6 +1683,9 @@ pub(crate) fn clean_middle_ty<'tcx>(
|
|||
|
||||
inline::record_extern_fqn(cx, did, ItemType::Trait);
|
||||
|
||||
// FIXME(fmease): Hide the trait-object lifetime bound if it coincides with its default
|
||||
// to partially address #44306. Follow the rules outlined at
|
||||
// https://doc.rust-lang.org/reference/lifetime-elision.html#default-trait-object-lifetimes
|
||||
let lifetime = clean_middle_region(*reg);
|
||||
let mut bounds = dids
|
||||
.map(|did| {
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ pub fn f(_: &(ToString + 'static)) {}
|
|||
impl Bar {
|
||||
// @has assoc_consts/struct.Bar.html '//*[@id="associatedconstant.F"]' \
|
||||
// "const F: fn(_: &(dyn ToString + 'static))"
|
||||
// FIXME(fmease): Hide default lifetime, render "const F: fn(_: &dyn ToString)"
|
||||
pub const F: fn(_: &(ToString + 'static)) = f;
|
||||
}
|
||||
|
||||
|
|
|
|||
17
src/test/rustdoc/inline_cross/auxiliary/dyn_trait.rs
Normal file
17
src/test/rustdoc/inline_cross/auxiliary/dyn_trait.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
pub type Ty0 = dyn for<'any> FnOnce(&'any str) -> bool;
|
||||
|
||||
pub type Ty1<'obj> = dyn std::fmt::Display + 'obj;
|
||||
|
||||
pub type Ty2 = dyn for<'a, 'r> Container<'r, Item<'a, 'static> = ()>;
|
||||
|
||||
pub type Ty3<'s> = &'s dyn ToString;
|
||||
|
||||
pub fn func0(_: &(dyn Fn() + '_)) {}
|
||||
|
||||
pub fn func1<'func>(_: &(dyn Fn() + 'func)) {}
|
||||
|
||||
pub trait Container<'r> {
|
||||
type Item<'a, 'ctx>;
|
||||
}
|
||||
|
||||
pub trait Shape<'a> {}
|
||||
31
src/test/rustdoc/inline_cross/dyn_trait.rs
Normal file
31
src/test/rustdoc/inline_cross/dyn_trait.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
#![crate_name = "user"]
|
||||
|
||||
// aux-crate:dyn_trait=dyn_trait.rs
|
||||
// edition:2021
|
||||
|
||||
// @has user/type.Ty0.html
|
||||
// @has - '//*[@class="item-decl"]//code' "dyn for<'any> FnOnce(&'any str) -> bool + 'static"
|
||||
// FIXME(fmease): Hide default lifetime bound `'static`
|
||||
pub use dyn_trait::Ty0;
|
||||
|
||||
// @has user/type.Ty1.html
|
||||
// @has - '//*[@class="item-decl"]//code' "dyn Display + 'obj"
|
||||
pub use dyn_trait::Ty1;
|
||||
|
||||
// @has user/type.Ty2.html
|
||||
// @has - '//*[@class="item-decl"]//code' "dyn for<'a, 'r> Container<'r, Item<'a, 'static> = ()>"
|
||||
pub use dyn_trait::Ty2;
|
||||
|
||||
// @has user/type.Ty3.html
|
||||
// @has - '//*[@class="item-decl"]//code' "&'s (dyn ToString + 's)"
|
||||
// FIXME(fmease): Hide default lifetime bound, render "&'s dyn ToString"
|
||||
pub use dyn_trait::Ty3;
|
||||
|
||||
// @has user/fn.func0.html
|
||||
// @has - '//pre[@class="rust fn"]' "func0(_: &dyn Fn())"
|
||||
// FIXME(fmease): Show placeholder-lifetime bound, render "func0(_: &(dyn Fn() + '_))"
|
||||
pub use dyn_trait::func0;
|
||||
|
||||
// @has user/fn.func1.html
|
||||
// @has - '//pre[@class="rust fn"]' "func1<'func>(_: &(dyn Fn() + 'func))"
|
||||
pub use dyn_trait::func1;
|
||||
Loading…
Add table
Add a link
Reference in a new issue