2019-12-08 15:50:23 -06:00
|
|
|
// Regression test for #66975 - ensure that we don't keep unevaluated
|
|
|
|
// `!`-typed constants until codegen.
|
|
|
|
|
|
|
|
// Force generation of optimized mir for functions that do not reach codegen.
|
|
|
|
// compile-flags: --emit mir,link
|
|
|
|
|
|
|
|
#![feature(const_panic)]
|
2019-12-11 10:46:56 -06:00
|
|
|
#![feature(never_type)]
|
2019-12-08 06:51:55 -06:00
|
|
|
#![warn(const_err)]
|
2019-12-08 15:50:23 -06:00
|
|
|
|
|
|
|
struct PrintName<T>(T);
|
|
|
|
|
|
|
|
impl<T> PrintName<T> {
|
|
|
|
const VOID: ! = panic!();
|
|
|
|
}
|
|
|
|
|
|
|
|
fn no_codegen<T>() {
|
|
|
|
let _ = PrintName::<T>::VOID;
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {}
|
|
|
|
|
|
|
|
// END RUST SOURCE
|
|
|
|
// START rustc.no_codegen.PreCodegen.after.mir
|
|
|
|
// bb0: {
|
|
|
|
// StorageLive(_1);
|
|
|
|
// _1 = const PrintName::<T>::VOID;
|
|
|
|
// unreachable;
|
|
|
|
// }
|
|
|
|
// END rustc.no_codegen.PreCodegen.after.mir
|