82 lines
3 KiB
Rust
82 lines
3 KiB
Rust
// Basic testing for trait aliases.
|
|
#![feature(trait_alias)]
|
|
#![crate_name = "it"]
|
|
|
|
// Check the "local case" (HIR cleaning) //
|
|
|
|
//@ has it/all.html '//a[@href="traitalias.Alias0.html"]' 'Alias0'
|
|
//@ has it/index.html '//h2[@id="trait-aliases"]' 'Trait Aliases'
|
|
//@ has it/index.html '//a[@class="traitalias"]' 'Alias0'
|
|
//@ has it/traitalias.Alias0.html
|
|
//@ has - '//*[@class="rust item-decl"]//code' 'trait Alias0 = Copy + Iterator<Item = u8>;'
|
|
pub trait Alias0 = Copy + Iterator<Item = u8>;
|
|
|
|
//@ has it/traitalias.Alias1.html
|
|
//@ has - '//pre[@class="rust item-decl"]' \
|
|
// "trait Alias1<'a, T: 'a + Clone, const N: usize> = From<[&'a T; N]>;"
|
|
pub trait Alias1<'a, T: 'a + Clone, const N: usize> = From<[&'a T; N]>;
|
|
|
|
//@ has it/traitalias.Alias2.html
|
|
//@ has - '//pre[@class="rust item-decl"]' \
|
|
// 'trait Alias2<T> = where T: From<String>, String: Into<T>;'
|
|
pub trait Alias2<T> = where T: From<String>, String: Into<T>;
|
|
|
|
//@ has it/traitalias.Alias3.html
|
|
//@ has - '//pre[@class="rust item-decl"]' 'trait Alias3 = ;'
|
|
pub trait Alias3 =;
|
|
|
|
//@ has it/traitalias.Alias4.html
|
|
//@ has - '//pre[@class="rust item-decl"]' 'trait Alias4 = ;'
|
|
pub trait Alias4 = where;
|
|
|
|
//@ has it/fn.usage0.html
|
|
//@ has - '//pre[@class="rust item-decl"]' "pub fn usage0(_: impl Alias0)"
|
|
//@ has - '//a[@href="traitalias.Alias0.html"]' 'Alias0'
|
|
pub fn usage0(_: impl Alias0) {}
|
|
|
|
// FIXME: One can only "disambiguate" intra-doc links to trait aliases with `type@` but not with
|
|
// `trait@` (fails to resolve) or `traitalias@` (doesn't exist). We should make at least one of
|
|
// the latter two work, right?
|
|
|
|
//@ has it/link0/index.html
|
|
//@ has - '//a/@href' 'traitalias.Alias0.html'
|
|
//@ has - '//a/@href' 'traitalias.Alias1.html'
|
|
/// [Alias0], [type@Alias1]
|
|
pub mod link0 {}
|
|
|
|
// Check the "extern case" (middle cleaning) //
|
|
|
|
//@ aux-build: ext-trait-aliases.rs
|
|
extern crate ext_trait_aliases as ext;
|
|
|
|
//@ has it/traitalias.ExtAlias0.html
|
|
//@ has - '//pre[@class="rust item-decl"]' 'trait ExtAlias0 = Copy + Iterator<Item = u8>;'
|
|
pub use ext::ExtAlias0;
|
|
|
|
//@ has it/traitalias.ExtAlias1.html
|
|
//@ has - '//pre[@class="rust item-decl"]' \
|
|
// "trait ExtAlias1<'a, T, const N: usize> = From<[&'a T; N]> where T: 'a + Clone;"
|
|
pub use ext::ExtAlias1;
|
|
|
|
//@ has it/traitalias.ExtAlias2.html
|
|
//@ has - '//pre[@class="rust item-decl"]' \
|
|
// 'trait ExtAlias2<T> = where T: From<String>, String: Into<T>;'
|
|
pub use ext::ExtAlias2;
|
|
|
|
//@ has it/traitalias.ExtAlias3.html
|
|
//@ has - '//pre[@class="rust item-decl"]' 'trait ExtAlias3 = Sized;'
|
|
pub use ext::ExtAlias3;
|
|
|
|
// NOTE: Middle cleaning can't discern `= Sized` and `= where Self: Sized` and that's okay.
|
|
//@ has it/traitalias.ExtAlias4.html
|
|
//@ has - '//pre[@class="rust item-decl"]' 'trait ExtAlias4 = Sized;'
|
|
pub use ext::ExtAlias4;
|
|
|
|
//@ has it/traitalias.ExtAlias5.html
|
|
//@ has - '//pre[@class="rust item-decl"]' 'trait ExtAlias5 = ;'
|
|
pub use ext::ExtAlias5;
|
|
|
|
//@ has it/fn.usage1.html
|
|
//@ has - '//pre[@class="rust item-decl"]' "pub fn usage1(_: impl ExtAlias0)"
|
|
//@ has - '//a[@href="traitalias.ExtAlias0.html"]' 'ExtAlias0'
|
|
pub fn usage1(_: impl ExtAlias0) {}
|