mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
		
			621 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			621 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // known-bug: #110395
 | |
| 
 | |
| #![feature(const_trait_impl)]
 | |
| 
 | |
| struct S;
 | |
| 
 | |
| impl const PartialEq for S {
 | |
|     fn eq(&self, _: &S) -> bool {
 | |
|         true
 | |
|     }
 | |
|     fn ne(&self, other: &S) -> bool {
 | |
|         !self.eq(other)
 | |
|     }
 | |
| }
 | |
| 
 | |
| // This duplicate bound should not result in ambiguities. It should be equivalent to a single ~const
 | |
| // bound.
 | |
| const fn equals_self<T: PartialEq + ~const PartialEq>(t: &T) -> bool {
 | |
|     *t == *t
 | |
| }
 | |
| 
 | |
| trait A: PartialEq {}
 | |
| impl<T: PartialEq> A for T {}
 | |
| 
 | |
| const fn equals_self2<T: A + ~const PartialEq>(t: &T) -> bool {
 | |
|     *t == *t
 | |
| }
 | |
| 
 | |
| pub const EQ: bool = equals_self(&S) && equals_self2(&S);
 | |
| 
 | |
| fn main() {}
 | 
