Change:
Super-High-Level Instructions: Replace with And then follow up by making sure that the compiler doesn't ICE anywhere (e.g. during MIR building). It should probably "just work" nowadays. A crater run isn't necessary, as this will only ICE if an error wasn't handled properly. Successfully compiling code is unaffected.
I took a look at this and all tests seem fine in just dropping in the code you have above as you said. However I just wanted to check is no longer needed? Pretty unfamiliar with this code so I wanted to confirm before submitting as it's not explicitly mentioned in the other thread that it should be removed.
Yes that should be removed, too. It will automatically be run when fetching the MIR of the current constant.
ok, cool! I have filed a PR for this in Let me know if anything needs to be updated!

Discussion:
let cid = key.value; let def_id = cid.instance.def.def_id(); <del> if let Some(id) = tcx.hir().as_local_hir_id(def_id) { let tables = tcx.typeck_tables_of(def_id); // Do match-check before building MIR // FIXME(#59378) check_match may have errored but we're not checking for that anymore tcx.check_match(def_id); if let hir::BodyOwnerKind::Const = tcx.hir().body_owner_kind_by_hir_id(id) { tcx.mir_const_qualif(def_id); } // Do not continue into miri if typeck errors occurred; it will fail horribly if tables.tainted_by_errors { return Err(ErrorHandled::Reported) } }; </del> <ins> if def_id.is_local() && tcx.typeck_tables_of(def_id).tainted_by_errors { return Err(ErrorHandled::Reported); } </ins> let (res, ecx) = eval_body_and_ecx(tcx, cid, None, key.param_env); res.and_then(|place| {

|         ^^^^^^^^^^^^^ | = note: ...which again requires processing `X::A::{{constant}}#0`, completing the cycle <del> note: cycle used when const-evaluating `X::A::{{constant}}#0` </del> <ins> note: cycle used when processing `X::A::{{constant}}#0` </ins> --> $DIR/issue-23302-1.rs:4:9 | LL |     A = X::A as isize,

|         ^^^^^^^^^^^^^ | = note: ...which again requires processing `Y::A::{{constant}}#0`, completing the cycle <del> note: cycle used when const-evaluating `Y::A::{{constant}}#0` </del> <ins> note: cycle used when processing `Y::A::{{constant}}#0` </ins> --> $DIR/issue-23302-2.rs:4:9 | LL |     A = Y::B as isize,

LL | const A: isize = Foo::B as isize; |                  ^^^^^^^^^^^^^^^ = note: ...which again requires processing `Foo::B::{{constant}}#0`, completing the cycle <del> note: cycle used when const-evaluating `Foo::B::{{constant}}#0` </del> <ins> note: cycle used when processing `Foo::B::{{constant}}#0` </ins> --> $DIR/issue-36163.rs:4:9 | LL |     B = A,

[(); return while let Some(n) = Some(0) {}]; //~^ ERROR return statement outside of function body <del> //~^^ WARN irrefutable while-let pattern </del> }

LL |     [(); return while let Some(n) = Some(0) {}]; |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <del> warning: irrefutable while-let pattern --> $DIR/issue-51714.rs:11:17 | LL |     [(); return while let Some(n) = Some(0) {}]; |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: #[warn(irrefutable_let_patterns)] on by default </del> error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0572`.