]> git.lizzy.rs Git - rust.git/blob - src/test/ui/consts/rfc-2203-const-array-repeat-exprs/migrate-pass.rs
bfa8ebcfdd32af3cffa16437284d453f6c7206c7
[rust.git] / src / test / ui / consts / rfc-2203-const-array-repeat-exprs / migrate-pass.rs
1 // check-pass
2 // compile-flags: -Z borrowck=migrate
3 // ignore-compare-mode-nll
4 #![feature(const_in_array_repeat_expressions)]
5 #![allow(warnings)]
6
7 // Some type that is not copyable.
8 struct Bar;
9
10 mod constants {
11     use Bar;
12
13     fn no_impl_copy_empty_value_no_elements() {
14         const FOO: Option<Bar> = None;
15         const ARR: [Option<Bar>; 0] = [FOO; 0];
16     }
17
18     fn no_impl_copy_empty_value_single_element() {
19         const FOO: Option<Bar> = None;
20         const ARR: [Option<Bar>; 1] = [FOO; 1];
21     }
22
23     fn no_impl_copy_empty_value_multiple_elements() {
24         const FOO: Option<Bar> = None;
25         const ARR: [Option<Bar>; 2] = [FOO; 2];
26     }
27
28     fn no_impl_copy_value_no_elements() {
29         const FOO: Option<Bar> = Some(Bar);
30         const ARR: [Option<Bar>; 0] = [FOO; 0];
31     }
32
33     fn no_impl_copy_value_single_element() {
34         const FOO: Option<Bar> = Some(Bar);
35         const ARR: [Option<Bar>; 1] = [FOO; 1];
36     }
37
38     fn no_impl_copy_value_multiple_elements() {
39         const FOO: Option<Bar> = Some(Bar);
40         const ARR: [Option<Bar>; 2] = [FOO; 2];
41     }
42
43     fn impl_copy_empty_value_no_elements() {
44         const FOO: Option<u32> = None;
45         const ARR: [Option<u32>; 0] = [FOO; 0];
46     }
47
48     fn impl_copy_empty_value_one_element() {
49         const FOO: Option<u32> = None;
50         const ARR: [Option<u32>; 1] = [FOO; 1];
51     }
52
53     fn impl_copy_empty_value_multiple_elements() {
54         const FOO: Option<u32> = None;
55         const ARR: [Option<u32>; 2] = [FOO; 2];
56     }
57
58     fn impl_copy_value_no_elements() {
59         const FOO: Option<u32> = Some(4);
60         const ARR: [Option<u32>; 0] = [FOO; 0];
61     }
62
63     fn impl_copy_value_one_element() {
64         const FOO: Option<u32> = Some(4);
65         const ARR: [Option<u32>; 1] = [FOO; 1];
66     }
67
68     fn impl_copy_value_multiple_elements() {
69         const FOO: Option<u32> = Some(4);
70         const ARR: [Option<u32>; 2] = [FOO; 2];
71     }
72 }
73
74 mod non_constants {
75     use Bar;
76
77     fn no_impl_copy_empty_value_no_elements() {
78         let x = None;
79         let arr: [Option<Bar>; 0] = [x; 0];
80     }
81
82     fn no_impl_copy_empty_value_single_element() {
83         let x = None;
84         let arr: [Option<Bar>; 1] = [x; 1];
85     }
86
87     fn no_impl_copy_value_no_elements() {
88         let x = Some(Bar);
89         let arr: [Option<Bar>; 0] = [x; 0];
90     }
91
92     fn no_impl_copy_value_single_element() {
93         let x = Some(Bar);
94         let arr: [Option<Bar>; 1] = [x; 1];
95     }
96
97     fn impl_copy_empty_value_no_elements() {
98         let x: Option<u32> = None;
99         let arr: [Option<u32>; 0] = [x; 0];
100     }
101
102     fn impl_copy_empty_value_one_element() {
103         let x: Option<u32> = None;
104         let arr: [Option<u32>; 1] = [x; 1];
105     }
106
107     fn impl_copy_empty_value_multiple_elements() {
108         let x: Option<u32> = None;
109         let arr: [Option<u32>; 2] = [x; 2];
110     }
111
112     fn impl_copy_value_no_elements() {
113         let x: Option<u32> = Some(4);
114         let arr: [Option<u32>; 0] = [x; 0];
115     }
116
117     fn impl_copy_value_one_element() {
118         let x: Option<u32> = Some(4);
119         let arr: [Option<u32>; 1] = [x; 1];
120     }
121
122     fn impl_copy_value_multiple_elements() {
123         let x: Option<u32> = Some(4);
124         let arr: [Option<u32>; 2] = [x; 2];
125     }
126 }
127
128 fn main() {}