| // This is a regression test for issue #104400. |
| |
| // revisions: unconstrained constrained |
| //[constrained] check-pass |
| |
| // Test that we can constrain generic const items that appear inside associated consts by |
| // adding a (makeshift) "evaluatable"-bound to the item. |
| |
| #![feature(generic_const_items, generic_const_exprs)] |
| #![allow(incomplete_features)] |
| |
| trait Trait { |
| const LEN: usize; |
| |
| #[cfg(unconstrained)] |
| const ARRAY: [i32; Self::LEN]; //[unconstrained]~ ERROR unconstrained generic constant |
| |
| #[cfg(constrained)] |
| const ARRAY: [i32; Self::LEN] |
| where |
| [(); Self::LEN]:; |
| } |
| |
| impl Trait for () { |
| const LEN: usize = 2; |
| const ARRAY: [i32; Self::LEN] = [360, 720]; |
| } |
| |
| fn main() { |
| let [_, _] = <() as Trait>::ARRAY; |
| } |