]> git.lizzy.rs Git - rust.git/blob - src/test/ui/consts/const-eval/issue-50814-2.rs
Auto merge of #67339 - CAD97:rc-provenance, r=sfackler
[rust.git] / src / test / ui / consts / const-eval / issue-50814-2.rs
1 // build-fail
2
3 trait C {
4     const BOO: usize;
5 }
6
7 trait Foo<T> {
8     const BAR: usize;
9 }
10
11 struct A<T>(T);
12
13 impl<T: C> Foo<T> for A<T> {
14     const BAR: usize = [5, 6, 7][T::BOO]; //~ ERROR any use of this value will cause an error
15 }
16
17 fn foo<T: C>() -> &'static usize {
18     &<A<T> as Foo<T>>::BAR //~ ERROR E0080
19 }
20
21 impl C for () {
22     const BOO: usize = 42;
23 }
24
25 impl C for u32 {
26     const BOO: usize = 1;
27 }
28
29 fn main() {
30     println!("{:x}", foo::<()>() as *const usize as usize);
31     println!("{:x}", foo::<u32>() as *const usize as usize);
32     println!("{:x}", foo::<()>());
33     println!("{:x}", foo::<u32>());
34 }