mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-03 05:27:36 +00:00

When `#![feature(min_generic_const_args)]` is enabled, we now lower all const paths in generic arg position to `hir::ConstArgKind::Path`. We then lower assoc const paths to `ty::ConstKind::Unevaluated` since we can no longer use the anon const expression lowering machinery. In the process of implementing this, I factored out `hir_ty_lowering` code that is now shared between lowering assoc types and assoc consts. This PR also introduces a `#[type_const]` attribute for trait assoc consts that are allowed as const args. However, we still need to implement code to check that assoc const definitions satisfy `#[type_const]` if present (basically is it a const path or a monomorphic anon const).
16 lines
245 B
Rust
16 lines
245 B
Rust
//@ check-pass
|
|
|
|
#![feature(min_generic_const_args)]
|
|
#![allow(incomplete_features)]
|
|
|
|
pub trait Tr<X> {
|
|
#[type_const]
|
|
const SIZE: usize;
|
|
}
|
|
|
|
fn mk_array<T: Tr<bool>>(_x: T) -> [(); <T as Tr<bool>>::SIZE] {
|
|
[(); T::SIZE]
|
|
}
|
|
|
|
fn main() {}
|