Skip to content

[ICE]: can't type-check body of DefId mgca + supertrait_item_shadowing (none-gce repro) #159169

Description

@matthiaskrgr

auto-reduced (treereduce-rust):

#![feature(min_generic_const_args)]
#![feature(supertrait_item_shadowing)]
trait A {
    type Assoc;
    const CONST: i32;
}
impl<T> A for T {
    type Assoc = i8;
    const CONST: i32 = 1;
}
trait B: A {
    type Assoc;
    const CONST: i32;
}
impl<T> B for T {
    type Assoc = i16;
    type const CONST: i32 = 2;
}

fn konst<T>() -> i32 {
    T::CONST
}
fn main() {
    assert_eq!(konst::<()>(), 2)
}

original:

#![feature(min_generic_const_args)]
#![feature(supertrait_item_shadowing)]
trait A {
    fn hello() -> &'static str {
        "A"
    }
    type Assoc;
    const CONST: i32;
}
impl<T> A for T {
    type Assoc = i8;
    const CONST: i32 = 1;
}
trait B: A {
    fn hello() -> &'static str {
        ""
    }
    type Assoc;
    const CONST: i32;
}
impl<T> B for T {
    type Assoc = i16;
    type const CONST: i32 = 2;
}
fn foo<T>() -> &'static str {
    T::hello()
}
fn assoc<T>() -> usize {
    size_of::<T>()
}
fn konst<T>() -> i32 {
    T::CONST
}
fn main() {
    assert_eq!(konst::<()>(), 2)
}

Version information

rustc 1.99.0-nightly (be8e82435 2026-07-11)
binary: rustc
commit-hash: be8e82435eb04fbe75ed5286b52735366e160bed
commit-date: 2026-07-11
host: x86_64-unknown-linux-gnu
release: 1.99.0-nightly
LLVM version: 22.1.8

Possibly related line of code:

let id = tcx.local_def_id_to_hir_id(def_id);
let node = tcx.hir_node(id);
let span = tcx.def_span(def_id);
// Figure out what primary body this item has.
let body_id = node.body_id().unwrap_or_else(|| {
span_bug!(span, "can't type-check body of {:?}", def_id);
});
let body = tcx.hir_body(body_id);
let param_env = tcx.param_env(def_id);
let root_ctxt = TypeckRootCtxt::new(tcx, def_id);

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc

Program output

warning: the feature `min_generic_const_args` is incomplete and may not be safe to use and/or cause compiler crashes
 --> /tmp/icemaker_global_tempdir.fXNCZ5e1FnPE/rustc_testrunner_tmpdir_reporting.rc99AX6NMEnG/mvce.rs:1:12
  |
1 | #![feature(min_generic_const_args)]
  |            ^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #132980 <https://github.com/rust-lang/rust/issues/132980> for more information
  = note: `#[warn(incomplete_features)]` on by default

warning: associated constant `CONST` is never used
 --> /tmp/icemaker_global_tempdir.fXNCZ5e1FnPE/rustc_testrunner_tmpdir_reporting.rc99AX6NMEnG/mvce.rs:5:11
  |
3 | trait A {
  |       - associated constant in this trait
4 |     type Assoc;
5 |     const CONST: i32;
  |           ^^^^^
  |
  = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default

error: internal compiler error: /rustc-dev/be8e82435eb04fbe75ed5286b52735366e160bed/compiler/rustc_hir_typeck/src/lib.rs:124:9: can't type-check body of DefId(0:16 ~ mvce[7724]::{impl#1}::CONST)
  --> /tmp/icemaker_global_tempdir.fXNCZ5e1FnPE/rustc_testrunner_tmpdir_reporting.rc99AX6NMEnG/mvce.rs:17:5
   |
17 |     type const CONST: i32 = 2;
   |     ^^^^^^^^^^^^^^^^^^^^^


thread 'rustc' (3709140) panicked at /rustc-dev/be8e82435eb04fbe75ed5286b52735366e160bed/compiler/rustc_hir_typeck/src/lib.rs:124:9:
Box<dyn Any>
stack backtrace:
   0:     0x7f9de2fef336 - <<std[9dee65175fc15e8a]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[f7c17f95b9e87ecb]::fmt::Display>::fmt
   1:     0x7f9de360f0c8 - core[f7c17f95b9e87ecb]::fmt::write
   2:     0x7f9de30047ac - <std[9dee65175fc15e8a]::sys::stdio::unix::Stderr as core[f7c17f95b9e87ecb]::io::write::Write>::write_fmt
   3:     0x7f9de2fc36ba - std[9dee65175fc15e8a]::panicking::default_hook::{closure#0}
   4:     0x7f9de2fe1a53 - std[9dee65175fc15e8a]::panicking::default_hook
   5:     0x7f9de1fbbe2b - std[9dee65175fc15e8a]::panicking::update_hook::<alloc[6f37f170616d1c17]::boxed::Box<rustc_driver_impl[bdac25697827ee93]::install_ice_hook::{closure#1}>>::{closure#0}
   6:     0x7f9de2fe1ef2 - std[9dee65175fc15e8a]::panicking::panic_with_hook
   7:     0x7f9de1fe8e71 - std[9dee65175fc15e8a]::panicking::begin_panic::<rustc_errors[494ff315151c0f38]::ExplicitBug>::{closure#0}
   8:     0x7f9de1fe1e66 - std[9dee65175fc15e8a]::sys::backtrace::__rust_end_short_backtrace::<std[9dee65175fc15e8a]::panicking::begin_panic<rustc_errors[494ff315151c0f38]::ExplicitBug>::{closure#0}, !>
   9:     0x7f9de1fdfc27 - std[9dee65175fc15e8a]::panicking::begin_panic::<rustc_errors[494ff315151c0f38]::ExplicitBug>
  10:     0x7f9de1ff4001 - <rustc_errors[494ff315151c0f38]::diagnostic::BugAbort as rustc_errors[494ff315151c0f38]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  11:     0x7f9de254a3bc - <rustc_errors[494ff315151c0f38]::DiagCtxtHandle>::span_bug::<rustc_span[fa652b6c2772fbf8]::span_encoding::Span, alloc[6f37f170616d1c17]::string::String>
  12:     0x7f9de2579546 - rustc_middle[dc20d7af34d4b5d8]::util::bug::opt_span_bug_fmt::<rustc_span[fa652b6c2772fbf8]::span_encoding::Span>::{closure#0}
  13:     0x7f9de25796d2 - rustc_middle[dc20d7af34d4b5d8]::ty::context::tls::with_opt::<rustc_middle[dc20d7af34d4b5d8]::util::bug::opt_span_bug_fmt<rustc_span[fa652b6c2772fbf8]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  14:     0x7f9de2564eab - rustc_middle[dc20d7af34d4b5d8]::ty::context::tls::with_context_opt::<rustc_middle[dc20d7af34d4b5d8]::ty::context::tls::with_opt<rustc_middle[dc20d7af34d4b5d8]::util::bug::opt_span_bug_fmt<rustc_span[fa652b6c2772fbf8]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  15:     0x7f9de05f7a98 - rustc_middle[dc20d7af34d4b5d8]::util::bug::span_bug_fmt::<rustc_span[fa652b6c2772fbf8]::span_encoding::Span>
  16:     0x7f9de0f1b08a - rustc_hir_typeck[7fefe0441a069e2b]::typeck_with_inspect::{closure#0}::{closure#0}
  17:     0x7f9de47dead7 - rustc_hir_typeck[7fefe0441a069e2b]::typeck_with_inspect::{closure#0}
  18:     0x7f9de47d72b0 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::typeck_root::invoke_provider_fn::__rust_begin_short_backtrace
  19:     0x7f9de3c51aa9 - rustc_query_impl[65ec22dc7d75fb0e]::execution::try_execute_query::<rustc_data_structures[7274291927d51f67]::vec_cache::VecCache<rustc_span[fa652b6c2772fbf8]::def_id::LocalDefId, rustc_middle[dc20d7af34d4b5d8]::query::erase::ErasedData<[u8; 8usize]>, rustc_middle[dc20d7af34d4b5d8]::dep_graph::graph::DepNodeIndex>, false>
  20:     0x7f9de3c51503 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::typeck_root::execute_query_non_incr::__rust_end_short_backtrace
  21:     0x7f9de3c58e5d - rustc_mir_build[eeeb229b717c14b9]::thir::pattern::check_match::check_match
  22:     0x7f9de3c57f87 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::check_match::invoke_provider_fn::__rust_begin_short_backtrace
  23:     0x7f9de43cc313 - rustc_query_impl[65ec22dc7d75fb0e]::execution::try_execute_query::<rustc_data_structures[7274291927d51f67]::vec_cache::VecCache<rustc_span[fa652b6c2772fbf8]::def_id::LocalDefId, rustc_middle[dc20d7af34d4b5d8]::query::erase::ErasedData<[u8; 1usize]>, rustc_middle[dc20d7af34d4b5d8]::dep_graph::graph::DepNodeIndex>, false>
  24:     0x7f9de43cbf76 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::check_match::execute_query_non_incr::__rust_end_short_backtrace
  25:     0x7f9de3e53893 - rustc_mir_build[eeeb229b717c14b9]::builder::build_mir_inner_impl
  26:     0x7f9de360feaa - rustc_mir_transform[4c85edcd2f644699]::mir_built
  27:     0x7f9de3c51aa9 - rustc_query_impl[65ec22dc7d75fb0e]::execution::try_execute_query::<rustc_data_structures[7274291927d51f67]::vec_cache::VecCache<rustc_span[fa652b6c2772fbf8]::def_id::LocalDefId, rustc_middle[dc20d7af34d4b5d8]::query::erase::ErasedData<[u8; 8usize]>, rustc_middle[dc20d7af34d4b5d8]::dep_graph::graph::DepNodeIndex>, false>
  28:     0x7f9de3c51743 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::mir_built::execute_query_non_incr::__rust_end_short_backtrace
  29:     0x7f9de37921e8 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::trivial_const::invoke_provider_fn::__rust_begin_short_backtrace
  30:     0x7f9de378f0b6 - rustc_query_impl[65ec22dc7d75fb0e]::execution::try_execute_query::<rustc_middle[dc20d7af34d4b5d8]::query::caches::DefIdCache<rustc_middle[dc20d7af34d4b5d8]::query::erase::ErasedData<[u8; 32usize]>>, false>
  31:     0x7f9de378e71e - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::trivial_const::execute_query_non_incr::__rust_end_short_backtrace
  32:     0x7f9de4140ed8 - rustc_const_eval[5c4fc539338c4d99]::const_eval::eval_queries::eval_to_const_value_raw_provider
  33:     0x7f9de41403d6 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::eval_to_const_value_raw::invoke_provider_fn::__rust_begin_short_backtrace
  34:     0x7f9de413f1f0 - rustc_query_impl[65ec22dc7d75fb0e]::execution::try_execute_query::<rustc_middle[dc20d7af34d4b5d8]::query::caches::DefaultCache<rustc_middle[dc20d7af34d4b5d8]::ty::PseudoCanonicalInput<rustc_middle[dc20d7af34d4b5d8]::mir::interpret::GlobalId>, rustc_middle[dc20d7af34d4b5d8]::query::erase::ErasedData<[u8; 24usize]>>, false>
  35:     0x7f9de413edcb - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::eval_to_const_value_raw::execute_query_non_incr::__rust_end_short_backtrace
  36:     0x7f9de4185db1 - <rustc_middle[dc20d7af34d4b5d8]::ty::context::TyCtxt>::const_eval_resolve
  37:     0x7f9de418f537 - rustc_monomorphize[5ddff886982a32e]::collector::items_of_instance
  38:     0x7f9de418e491 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::items_of_instance::invoke_provider_fn::__rust_begin_short_backtrace
  39:     0x7f9de41a5d98 - rustc_query_impl[65ec22dc7d75fb0e]::execution::try_execute_query::<rustc_middle[dc20d7af34d4b5d8]::query::caches::DefaultCache<(rustc_middle[dc20d7af34d4b5d8]::ty::instance::Instance, rustc_middle[dc20d7af34d4b5d8]::mono::CollectionMode), rustc_middle[dc20d7af34d4b5d8]::query::erase::ErasedData<[u8; 32usize]>>, false>
  40:     0x7f9de41a5a03 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::items_of_instance::execute_query_non_incr::__rust_end_short_backtrace
  41:     0x7f9de41a4794 - rustc_monomorphize[5ddff886982a32e]::collector::collect_items_rec::{closure#0}
  42:     0x7f9de4a5ac40 - rustc_monomorphize[5ddff886982a32e]::collector::collect_items_rec
  43:     0x7f9de4a5c5cb - rustc_monomorphize[5ddff886982a32e]::collector::collect_items_rec
  44:     0x7f9de3e03061 - rustc_monomorphize[5ddff886982a32e]::collector::collect_crate_mono_items::{closure#1}::{closure#0}
  45:     0x7f9de420fdf5 - rustc_monomorphize[5ddff886982a32e]::partitioning::collect_and_partition_mono_items
  46:     0x7f9de476f228 - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::collect_and_partition_mono_items::invoke_provider_fn::__rust_begin_short_backtrace
  47:     0x7f9de476eb81 - rustc_query_impl[65ec22dc7d75fb0e]::execution::try_execute_query::<rustc_middle[dc20d7af34d4b5d8]::query::caches::SingleCache<rustc_middle[dc20d7af34d4b5d8]::query::erase::ErasedData<[u8; 24usize]>>, false>
  48:     0x7f9de476e83c - rustc_query_impl[65ec22dc7d75fb0e]::query_impl::collect_and_partition_mono_items::execute_query_non_incr::__rust_end_short_backtrace
  49:     0x7f9de492544c - rustc_codegen_ssa[6bd443ac0c28161e]::base::codegen_crate::<rustc_codegen_llvm[e8ec844b0182af14]::LlvmCodegenBackend, rustc_codegen_llvm[e8ec844b0182af14]::ModuleLlvm>
  50:     0x7f9de492514d - <rustc_codegen_llvm[e8ec844b0182af14]::LlvmCodegenBackend as rustc_codegen_ssa[6bd443ac0c28161e]::traits::backend::CodegenBackend>::codegen_crate
  51:     0x7f9de470c561 - <rustc_interface[3c71d144d463ca91]::queries::Linker>::codegen_and_build_linker
  52:     0x7f9de4707b5c - rustc_interface[3c71d144d463ca91]::interface::run_compiler::<(), rustc_driver_impl[bdac25697827ee93]::run_compiler::{closure#0}>::{closure#1}
  53:     0x7f9de475b57a - std[9dee65175fc15e8a]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[3c71d144d463ca91]::util::run_in_thread_with_globals<rustc_interface[3c71d144d463ca91]::util::run_in_thread_pool_with_globals<rustc_interface[3c71d144d463ca91]::interface::run_compiler<(), rustc_driver_impl[bdac25697827ee93]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  54:     0x7f9de475b32d - <std[9dee65175fc15e8a]::thread::lifecycle::spawn_unchecked<rustc_interface[3c71d144d463ca91]::util::run_in_thread_with_globals<rustc_interface[3c71d144d463ca91]::util::run_in_thread_pool_with_globals<rustc_interface[3c71d144d463ca91]::interface::run_compiler<(), rustc_driver_impl[bdac25697827ee93]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[f7c17f95b9e87ecb]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  55:     0x7f9de475f750 - <std[9dee65175fc15e8a]::sys::thread::unix::Thread>::new::thread_start
  56:     0x7f9dde097739 - <unknown>
  57:     0x7f9dde11bedc - <unknown>
  58:                0x0 - <unknown>

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: please make sure that you have updated to the latest nightly

note: rustc 1.99.0-nightly (be8e82435 2026-07-11) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [typeck_root] type-checking `<impl at /tmp/icemaker_global_tempdir.fXNCZ5e1FnPE/rustc_testrunner_tmpdir_reporting.rc99AX6NMEnG/mvce.rs:15:1: 15:16>::CONST`
#1 [check_match] match-checking `<impl at /tmp/icemaker_global_tempdir.fXNCZ5e1FnPE/rustc_testrunner_tmpdir_reporting.rc99AX6NMEnG/mvce.rs:15:1: 15:16>::CONST`
#2 [mir_built] building MIR for `<impl at /tmp/icemaker_global_tempdir.fXNCZ5e1FnPE/rustc_testrunner_tmpdir_reporting.rc99AX6NMEnG/mvce.rs:15:1: 15:16>::CONST`
#3 [trivial_const] checking if `<impl at /tmp/icemaker_global_tempdir.fXNCZ5e1FnPE/rustc_testrunner_tmpdir_reporting.rc99AX6NMEnG/mvce.rs:15:1: 15:16>::CONST` is a trivial const
#4 [eval_to_const_value_raw] simplifying constant for the type system `<impl at /tmp/icemaker_global_tempdir.fXNCZ5e1FnPE/rustc_testrunner_tmpdir_reporting.rc99AX6NMEnG/mvce.rs:15:1: 15:16>::CONST`
#5 [items_of_instance] collecting items used by `konst::<()>`
#6 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: aborting due to 1 previous error; 2 warnings emitted


@rustbot label +F-min_generic_const_args +F-supertrait_item_shadowing

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.F-gca_min_const_items`#![feature(gca_min_const_items)]` (previously: `min_generic_const_args`)F-supertrait_item_shadowing`#![feature(supertrait_item_shadowing)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove when done. See docs forge.rust-lang.org/release/issue-triaging

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions