diff --git a/src/eval_context.rs b/src/eval_context.rs index da25b1b21765d2e03102c5691a2cddd11e958279..bbcb7619768ef85f48be29c92fbae4e67e8d697b 100644 --- a/src/eval_context.rs +++ b/src/eval_context.rs @@ -686,7 +686,9 @@ impl<'a, 'tcx> EvalContext<'a, 'tcx> { } self.write_primval(dest, PrimVal::Bytes(discr_val), dest_ty)?; } else { - bug!("rustc only generates Rvalue::Discriminant for enums"); + //bug!("rustc only generates Rvalue::Discriminant for enums"); + // Getting here is no longer a bug. Is there something else we should be doing? + // See https://github.com/rust-lang/rust/pull/48092. } }, } diff --git a/tests/compile-fail/invalid_enum_discriminant.rs b/tests/compile-fail/invalid_enum_discriminant.rs index bde78200b3c47a92dc601b2b1939eff6a9500512..0b594b95870c0630f633fd43bf8fe6c2df4b9c1f 100644 --- a/tests/compile-fail/invalid_enum_discriminant.rs +++ b/tests/compile-fail/invalid_enum_discriminant.rs @@ -5,8 +5,8 @@ pub enum Foo { fn main() { let f = unsafe { std::mem::transmute::<i32, Foo>(42) }; - match f { - Foo::A => {}, //~ ERROR invalid enum discriminant value read + match f { //~ ERROR invalid enum discriminant value read + Foo::A => {}, Foo::B => {}, Foo::C => {}, Foo::D => {},