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