#![allow(dead_code, unused_braces)] struct A; struct Defaults; fn bare(x: A<{ N }>) -> A { x } fn repeat_type() -> usize { [0u8; std::mem::size_of::<*const T>()].len() } fn inline() -> usize { const { N + 1 } } fn shadow() -> usize { let a = [0u8; { const N: usize = 3; N + 1 }]; a.len() } struct S; impl S { const N: usize = 4; fn self_alias() -> [u8; Self::N] { [0; Self::N] } } #[test] fn accepted_const_scopes() { let _: A<3> = bare(A::<3>); assert_eq!(repeat_type::(), 8); assert_eq!(inline::<3>(), 4); assert_eq!(shadow::<2>(), 4); assert_eq!(S::self_alias().len(), 4); }