]> git.lizzy.rs Git - rust.git/blob - src/test/ui/const-generics/issue-70180-2-stalled_on.rs
Auto merge of #79342 - CDirkx:ipaddr-const, r=oli-obk
[rust.git] / src / test / ui / const-generics / issue-70180-2-stalled_on.rs
1 // build-pass
2 // revisions: full min
3
4 #![cfg_attr(full, feature(const_generics))]
5 #![cfg_attr(full, allow(incomplete_features))]
6 #![cfg_attr(min, feature(min_const_generics))]
7
8 fn works() {
9     let array/*: [u8; _]*/ = default_byte_array();
10     let _: [_; 4] = array;
11     Foo::foo(&array);
12 }
13
14 fn didnt_work() {
15     let array/*: [u8; _]*/ = default_byte_array();
16     Foo::foo(&array);
17     let _: [_; 4] = array;
18 }
19
20 trait Foo<T> {
21     fn foo(&self) {}
22 }
23
24 impl Foo<i32> for [u8; 4] {}
25 impl Foo<i64> for [u8; 8] {}
26
27 // Only needed because `[u8; _]` is not valid type syntax.
28 fn default_byte_array<const N: usize>() -> [u8; N]
29 where
30     [u8; N]: Default,
31 {
32     Default::default()
33 }
34
35 fn main() {
36     works();
37     didnt_work();
38 }