| //@ revisions: full min | 
 | #![allow(incomplete_features)] | 
 | #![cfg_attr(full, feature(generic_const_exprs))] | 
 | #![cfg_attr(full, allow(incomplete_features))] | 
 |  | 
 | trait HasSize { | 
 |     const SIZE: usize; | 
 | } | 
 |  | 
 | impl<const X: usize> HasSize for ArrayHolder<X> { | 
 |     const SIZE: usize = X; | 
 | } | 
 |  | 
 | struct ArrayHolder<const X: usize>([u32; X]); | 
 |  | 
 | impl<const X: usize> ArrayHolder<X> { | 
 |     pub const fn new() -> Self { | 
 |         ArrayHolder([0; Self::SIZE]) | 
 |         //~^ ERROR mismatched types | 
 |         //[full]~^^ ERROR unconstrained generic constant | 
 |         //[min]~^^^ ERROR constant expression depends on a generic parameter | 
 |     } | 
 | } | 
 |  | 
 | fn main() { | 
 |     let mut array = ArrayHolder::new(); | 
 |     //~^ ERROR: type annotations needed | 
 |     //~| ERROR type annotations needed | 
 | } |