mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			38 lines
		
	
	
		
			1016 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1016 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| #![feature(adt_const_params)]
 | |
| #![allow(incomplete_features)]
 | |
| 
 | |
| use std::marker::ConstParamTy;
 | |
| 
 | |
| #[derive(PartialEq, Eq, ConstParamTy)]
 | |
| enum CompileFlag {
 | |
|     A,
 | |
|     B,
 | |
| }
 | |
| 
 | |
| pub fn test_1<const CF: CompileFlag>() {}
 | |
| pub fn test_2<T, const CF: CompileFlag>(x: T) {}
 | |
| pub struct Example<const CF: CompileFlag, T=u32>{
 | |
|     x: T,
 | |
| }
 | |
| 
 | |
| impl<const CF: CompileFlag, T> Example<CF, T> {
 | |
|   const ASSOC_FLAG: CompileFlag = CompileFlag::A;
 | |
| }
 | |
| 
 | |
| pub fn main() {
 | |
|   test_1::<CompileFlag::A>();
 | |
|   //~^ ERROR: expected type, found variant
 | |
|   //~| ERROR: unresolved item provided when a constant was expected
 | |
| 
 | |
|   test_2::<_, CompileFlag::A>(0);
 | |
|   //~^ ERROR: expected type, found variant
 | |
|   //~| ERROR: unresolved item provided when a constant was expected
 | |
| 
 | |
|   let _: Example<CompileFlag::A, _> = Example { x: 0 };
 | |
|   //~^ ERROR: expected type, found variant
 | |
|   //~| ERROR: unresolved item provided when a constant was expected
 | |
| 
 | |
|   let _: Example<Example::ASSOC_FLAG, _> = Example { x: 0 };
 | |
|   //~^ ERROR: type provided when a constant was expected
 | |
| }
 | 
