mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-28 09:44:08 +00:00
32 lines
753 B
Rust
32 lines
753 B
Rust
// 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;
|
|
}
|