| //@ run-pass | |
| #![allow(unused)] | |
| // Some type that is not copyable. | |
| struct Bar; | |
| const fn type_no_copy() -> Option<Bar> { | |
| None | |
| } | |
| const fn type_copy() -> u32 { | |
| 3 | |
| } | |
| const _: [u32; 2] = [type_copy(); 2]; | |
| // This is allowed because all promotion contexts use the explicit rules for promotability when | |
| // inside an explicit const context. | |
| const _: [Option<Bar>; 2] = [const { type_no_copy() }; 2]; | |
| fn main() {} |