]> git.lizzy.rs Git - rust.git/blob - tests/ui/const-generics/generic_const_exprs/abstract-const-as-cast-4.rs
Rollup merge of #106664 - chenyukang:yukang/fix-106597-remove-lseek, r=cuviper
[rust.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() {}