]> git.proxmox.com Git - rustc.git/blob - tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-4.rs
New upstream version 1.68.2+dfsg1
[rustc.git] / tests / ui / const-generics / generic_const_exprs / abstract-const-as-cast-4.rs
1 // check-pass
2 #![feature(generic_const_exprs)]
3 #![allow(incomplete_features)]
4
5 trait Trait {}
6 pub struct EvaluatableU128<const N: u128>;
7
8 struct HasCastInTraitImpl<const N: usize, const M: u128>;
9 impl<const O: usize> Trait for HasCastInTraitImpl<O, { O as u128 }> {}
10
11 pub fn use_trait_impl<const N: usize>() where EvaluatableU128<{N as u128}>:, {
12 fn assert_impl<T: Trait>() {}
13
14 assert_impl::<HasCastInTraitImpl<N, { N as u128 }>>();
15 assert_impl::<HasCastInTraitImpl<N, { N as _ }>>();
16 assert_impl::<HasCastInTraitImpl<12, { 12 as u128 }>>();
17 assert_impl::<HasCastInTraitImpl<13, 13>>();
18 }
19 pub fn use_trait_impl_2<const N: usize>() where EvaluatableU128<{N as _}>:, {
20 fn assert_impl<T: Trait>() {}
21
22 assert_impl::<HasCastInTraitImpl<N, { N as u128 }>>();
23 assert_impl::<HasCastInTraitImpl<N, { N as _ }>>();
24 assert_impl::<HasCastInTraitImpl<12, { 12 as u128 }>>();
25 assert_impl::<HasCastInTraitImpl<13, 13>>();
26 }
27
28
29 fn main() {}