| //@ edition:2015 | |
| #![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 | |
| } |