mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			83 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			3.0 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) {}
 | 
