mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			26 lines
		
	
	
		
			588 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			588 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // check-pass
 | |
| 
 | |
| // Test that impls on projected self types can resolve overlap, even when the
 | |
| // projections involve specialization, so long as the associated type is
 | |
| // provided by the most specialized impl.
 | |
| 
 | |
| #![feature(specialization)] //~ WARN the feature `specialization` is incomplete
 | |
| 
 | |
| trait Assoc {
 | |
|     type Output;
 | |
| }
 | |
| 
 | |
| default impl<T> Assoc for T {
 | |
|     type Output = bool;
 | |
| }
 | |
| 
 | |
| impl Assoc for u8 { type Output = u8; }
 | |
| impl Assoc for u16 { type Output = u16; }
 | |
| 
 | |
| trait Foo {}
 | |
| impl Foo for u32 {}
 | |
| impl Foo for <u8 as Assoc>::Output {}
 | |
| impl Foo for <u16 as Assoc>::Output {}
 | |
| 
 | |
| fn main() {}
 | 
