blob: c187c87c7763ee8a8d62baef9285a5ed16256d86 [file] [log] [blame]
//@ check-pass
#![feature(generic_const_items, min_generic_const_args)]
#![feature(adt_const_params, unsized_const_params, generic_const_parameter_types)]
#![expect(incomplete_features)]
use std::marker::{ConstParamTy, ConstParamTy_};
trait Owner {
type const C<const N: u32>: u32;
type const K<const N: u32>: u32;
type const Q<T: ConstParamTy_>: Maybe<T>;
}
impl Owner for () {
type const C<const N: u32>: u32 = N;
type const K<const N: u32>: u32 = const { 99 + 1 };
type const Q<T: ConstParamTy_>: Maybe<T> = Maybe::Nothing::<T>;
}
fn take0<const N: u32>(_: impl Owner<C<N> = { N }>) {}
fn take1(_: impl Owner<K<99> = 100>) {}
fn take2(_: impl Owner<Q<()> = { Maybe::Just::<()>(()) }>) {}
fn main() {
take0::<128>(());
take1(());
}
#[derive(PartialEq, Eq, ConstParamTy)]
enum Maybe<T> {
Nothing,
Just(T),
}