| //! check that const eval can observe associated types of opaque types. | |
| //@ check-pass | |
| trait MyTrait: Copy { | |
| const ASSOC: usize; | |
| } | |
| impl MyTrait for u8 { | |
| const ASSOC: usize = 32; | |
| } | |
| const fn yeet() -> impl MyTrait { | |
| 0u8 | |
| } | |
| const fn output<T: MyTrait>(_: T) -> usize { | |
| <T as MyTrait>::ASSOC | |
| } | |
| #[repr(usize)] | |
| enum Foo { | |
| Bar = output(yeet()), | |
| } | |
| fn main() { | |
| println!("{}", Foo::Bar as usize); | |
| } |