2019-11-22 10:45:49 -08:00
|
|
|
// run-pass
|
|
|
|
|
2021-01-26 22:49:30 +00:00
|
|
|
#![feature(inline_const)]
|
2021-11-22 20:14:25 +00:00
|
|
|
#![allow(unused)]
|
2019-11-22 10:45:49 -08:00
|
|
|
|
|
|
|
// 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.
|
2021-01-26 22:49:30 +00:00
|
|
|
const _: [Option<Bar>; 2] = [const { type_no_copy() }; 2];
|
2019-11-22 10:45:49 -08:00
|
|
|
|
|
|
|
fn main() {}
|