blob: 49a31ea3e5270938de2631b37eb403273d2f55a3 [file] [log] [blame] [edit]
//@ run-pass
#![feature(min_generic_const_args, adt_const_params)]
#![expect(incomplete_features)]
use std::marker::ConstParamTy;
#[derive(Debug, Eq, PartialEq, ConstParamTy)]
struct Inner(u32);
#[derive(Debug, Eq, PartialEq, ConstParamTy)]
struct Outer(Inner);
#[derive(Debug, Eq, PartialEq, ConstParamTy)]
enum Container<T> {
Wrap(T),
}
fn with_outer<const O: Outer>() -> Outer {
O
}
fn with_container<const C: Container<Inner>>() -> Container<Inner> {
C
}
fn test<const N: u32>() {
with_outer::<{ Outer(Inner(N)) }>();
with_outer::<{ Outer(Inner(const { 42 })) }>();
with_container::<{ Container::Wrap::<Inner>(Inner(N)) }>();
}
fn main() {
test::<5>();
let o = with_outer::<{ Outer(Inner(const { 10 })) }>();
assert_eq!(o, Outer(Inner(10)));
}