33 lines
628 B
Rust
33 lines
628 B
Rust
//@ known-bug: #110395
|
|
//@ compile-flags: -Znext-solver
|
|
// FIXME(effects): check-pass
|
|
#![feature(const_trait_impl, effects, generic_const_exprs)]
|
|
#![allow(incomplete_features)]
|
|
|
|
fn main() {
|
|
let _ = process::<()>([()]);
|
|
let _ = Struct::<(), 4> { field: [1, 0] };
|
|
}
|
|
|
|
fn process<T: const Trait>(input: [(); T::make(2)]) -> [(); T::make(2)] {
|
|
input
|
|
}
|
|
|
|
struct Struct<T: const Trait, const P: usize>
|
|
where
|
|
[u32; T::make(P)]:,
|
|
{
|
|
field: [u32; T::make(P)],
|
|
}
|
|
|
|
#[const_trait]
|
|
trait Trait {
|
|
fn make(input: usize) -> usize;
|
|
}
|
|
|
|
impl const Trait for () {
|
|
fn make(input: usize) -> usize {
|
|
input / 2
|
|
}
|
|
}
|