mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-27 18:57:42 +03:00
5cccc7ca02
Fix ICE: Don't try to evaluate type_consts when eagerly collecting items This fixes https://github.com/rust-lang/rust/issues/151246 The change is pretty straightforward if the Monomorphization strategy is eager which `-Clink-dead-code=true` sets. This then would lead to the existing code to try and evaluate a `type const` which does not have a body to evaluate leading to an ICE. The change is pretty straight forward just skip over type consts. This also seems like a sensible choice to me since a MonoItem can only be a Fn, Static, or Asm. A type const is none of the aforementioned. And even if it was added to the MonoItems list it would then later fail this check: https://github.com/rust-lang/rust/blob/fe98ddcfcfb6f185dbf4adeaf439d8a756da0273/compiler/rustc_monomorphize/src/collector.rs#L438-L440 Since that explicitly checks that the MonoItem's `DefKind` is static and not anything else. One more change is the addition of a simple test of the example code from https://github.com/rust-lang/rust/issues/151246 that checks that code compiles successfully with `-Clink-dead-code=true`. The only other change was to make the guard checks a little easier to read by making the logic more linear instead of one big if statement. r? @BoxyUwU @rustbot label +F-associated_const_equality +F-min_generic_const_args