Interpreter calls discriminant_for_variant on zero variant enum · Issue #89765 · rust-lang/rust (original) (raw)
Interpreter calls discriminant_for_variant
on zero variant enum, when asked unsafely to do so :-).
Code
#![feature(const_discriminant)] #![feature(const_raw_ptr_deref)]
pub enum Void { }
pub const C: () = { unsafe { std::mem::discriminant(&*(&() as *const () as *const Void)); }; };
Error
error: internal compiler error: /rustc/41dfaaa3c66759395835b3af59b22f4f22175dc8/compiler/rustc_middle/src/ty/sty.rs:2009:17: discriminant_for_variant called on zero variant enum
thread 'rustc' panicked at 'Box<dyn Any>', compiler/rustc_errors/src/lib.rs:1146:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md
note: rustc 1.57.0-nightly (41dfaaa3c 2021-10-10) running on x86_64-unknown-linux-gnu
note: compiler flags: --crate-type lib
query stack during panic:
#0 [eval_to_allocation_raw] const-evaluating + checking `C`
#1 [eval_to_const_value_raw] simplifying constant for the type system `C`
end of query stack
error: aborting due to previous error
@rustbot label: +requires-nightly +A-const-eval