ICE:`None` in compiler\rustc_middle\src\ty\sty.rs
Open
Nobody has claimed this yet.
C-bug
F-generic_const_exprs
I-ICE
P-low
T-compiler
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
The code is generated by a fuzzer and reduced manually
Possibly duplicated with #129882 or #128525 (but with different query stacks)
Code
#![feature(generic_const_exprs)]
struct X<
const FN: fn() = {
|| {
let _: fn([A; B]) -> B = B::B;
}
},
>;
fn main() {}
Meta
rustc --version --verbose:
rustc 1.89.0-nightly (c68340350 2025-06-18)
binary: rustc
commit-hash: c68340350c78eea402c4a85f8d9c1b7d3d607635
commit-date: 2025-06-18
host: x86_64-pc-windows-msvc
release: 1.89.0-nightly
LLVM version: 20.1.7
Error output
error[E0412]: cannot find type `A` in this scope
--> .\test.rs:5:24
|
5 | let _: fn([A; B]) -> B = B::B;
| ^ not found in this scope
error[E0425]: cannot find value `B` in this scope
--> .\test.rs:5:27
|
5 | let _: fn([A; B]) -> B = B::B;
| ^ not found in this scope
error[E0412]: cannot find type `B` in this scope
--> .\test.rs:5:34
|
5 | let _: fn([A; B]) -> B = B::B;
| ^ not found in this scope
error[E0433]: failed to resolve: use of undeclared type `B`
--> .\test.rs:5:38
|
5 | let _: fn([A; B]) -> B = B::B;
| ^ use of undeclared type `B`
Backtrace
thread 'rustc' panicked at compiler\rustc_middle\src\ty\sty.rs:365:36:
called `Option::unwrap()` on a `None` value
stack backtrace:
0: 0x7fff7ce1b5d2 - std::backtrace_rs::backtrace::win64::trace
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\..\..\backtrace\src\backtrace\win64.rs:85
1: 0x7fff7ce1b5d2 - std::backtrace_rs::backtrace::trace_unsynchronized
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\..\..\backtrace\src\backtrace\mod.rs:66
2: 0x7fff7ce1b5d2 - std::sys::backtrace::_print_fmt
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\sys\backtrace.rs:66
3: 0x7fff7ce1b5d2 - std::sys::backtrace::impl$0::print::impl$0::fmt
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\sys\backtrace.rs:39
4: 0x7fff7ce4e32b - core::fmt::rt::Argument::fmt
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\core\src\fmt\rt.rs:173
5: 0x7fff7ce4e32b - core::fmt::write
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\core\src\fmt\mod.rs:1460
6: 0x7fff7ce111b7 - std::io::default_write_fmt
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\io\mod.rs:639
7: 0x7fff7ce111b7 - std::io::Write::write_fmt<std::sys::stdio::windows::Stderr>
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\io\mod.rs:1954
8: 0x7fff7ce1b415 - std::sys::backtrace::BacktraceLock::print
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\sys\backtrace.rs:42
9: 0x7fff7ce211fa - std::panicking::default_hook::closure$0
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\panicking.rs:300
10: 0x7fff7ce20f90 - std::panicking::default_hook
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\panicking.rs:327
11: 0x7fff7e5c8df7 - core[7913bd6e64290783]::slice::sort::unstable::heapsort::heapsort::<((rustc_lint_defs[86baf848793ac088]::Level, &str), usize), <((rustc_lint_defs[86baf848793ac088]::Level, &str), usize) as core[7913bd6e64290783]::cmp::PartialOrd>::lt>
12: 0x7fff7ce21e4e - std::panicking::rust_panic_with_hook
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\panicking.rs:841
13: 0x7fff7ce21b82 - std::panicking::begin_panic_handler::closure$0
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\panicking.rs:699
14: 0x7fff7ce1c37f - std::sys::backtrace::__rust_end_short_backtrace<std::panicking::begin_panic_handler::closure_env$0,never$>
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\sys\backtrace.rs:168
15: 0x7fff7ce217ce - std::panicking::begin_panic_handler
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\panicking.rs:697
16: 0x7fff7ff79e51 - core::panicking::panic_fmt
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\core\src\panicking.rs:75
17: 0x7fff7ff79f0d - core::panicking::panic
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\core\src\panicking.rs:145
18: 0x7fff7ff79dce - core::option::unwrap_failed
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\core\src\option.rs:2072
19: 0x7fff7e4d61a7 - <rustc_middle[7a9f6d0772b0e5ea]::ty::sty::ParamConst>::find_ty_from_env
20: 0x7fff7dece6ae - <rustc_trait_selection[380248135e80b586]::traits::fulfill::FulfillProcessor as rustc_data_structures[201c6ced6e2f5255]::obligation_forest::ObligationProcessor>::process_obligation
21: 0x7fff7ddbb28f - <rustc_data_structures[201c6ced6e2f5255]::obligation_forest::ObligationForest<rustc_trait_selection[380248135e80b586]::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection[380248135e80b586]::traits::fulfill::FulfillProcessor>
22: 0x7fff7d11952a - rustc_hir_typeck[882b3cd343a194b5]::typeck
23: 0x7fff7d00e5cb - <<rustc_hir_typeck[882b3cd343a194b5]::fn_ctxt::FnCtxt>::deduce_closure_signature_from_predicates::MentionsTy as rustc_type_ir[c6b2233d270133a9]::visit::TypeVisitor<rustc_middle[7a9f6d0772b0e5ea]::ty::context::TyCtxt>>::visit_ty
24: 0x7fff7d0758e3 - <<rustc_hir_typeck[882b3cd343a194b5]::fn_ctxt::FnCtxt>::collect_impl_trait_clauses_from_hir_ty::CollectClauses as rustc_hir[14c811bc678e5da3]::intravisit::Visitor>::visit_ty
25: 0x7fff7d00f248 - <<rustc_hir_typeck[882b3cd343a194b5]::fn_ctxt::FnCtxt>::deduce_closure_signature_from_predicates::MentionsTy as rustc_type_ir[c6b2233d270133a9]::visit::TypeVisitor<rustc_middle[7a9f6d0772b0e5ea]::ty::context::TyCtxt>>::visit_ty
26: 0x7fff7d00cdfd - <<rustc_hir_typeck[882b3cd343a194b5]::fn_ctxt::FnCtxt>::deduce_closure_signature_from_predicates::MentionsTy as rustc_type_ir[c6b2233d270133a9]::visit::TypeVisitor<rustc_middle[7a9f6d0772b0e5ea]::ty::context::TyCtxt>>::visit_ty
27: 0x7fff7d13b5dd - <rustc_hir_typeck[882b3cd343a194b5]::upvar::InferBorrowKind as rustc_hir_typeck[882b3cd343a194b5]::expr_use_visitor::Delegate>::borrow
28: 0x7fff7d0e25c0 - rustc_hir_typeck[882b3cd343a194b5]::typeck
29: 0x7fff7dd5e26b - rustc_query_impl[361a4cf8fe8cc9a1]::plumbing::query_key_hash_verify_all
30: 0x7fff7dca458e - RINvNtNtCsfUzTRJIdkm9_18rustc_query_system5query8plumbing17try_execute_queryINtCs4DZekDd09mT_16rustc_query_impl13DynamicConfigINtNtCs2KVqGvLot8v_21rustc_data_structures9vec_cache8VecCacheNtNtCsctD8KnfPWOA_10rustc_span6def_id10LocalDefIdINtNtNtCsawIwdSmi5Ly
31: 0x7fff7dd65552 - rustc_query_impl[361a4cf8fe8cc9a1]::plumbing::query_key_hash_verify_all
32: 0x7fff7d50ff24 - rustc_mir_build[79dfbe29b966379e]::thir::cx::thir_body
33: 0x7fff7dd5e4d9 - rustc_query_impl[361a4cf8fe8cc9a1]::plumbing::query_key_hash_verify_all
34: 0x7fff7dc9ba57 - RINvNtNtCsfUzTRJIdkm9_18rustc_query_system5query8plumbing17try_execute_queryINtCs4DZekDd09mT_16rustc_query_impl13DynamicConfigINtNtCs2KVqGvLot8v_21rustc_data_structures9vec_cache8VecCacheNtNtCsctD8KnfPWOA_10rustc_span6def_id10LocalDefIdINtNtNtCsawIwdSmi5Ly
35: 0x7fff7dd613e5 - rustc_query_impl[361a4cf8fe8cc9a1]::plumbing::query_key_hash_verify_all
36: 0x7fff7db42366 - rustc_ty_utils[7e201f528f137b00]::consts::thir_abstract_const
37: 0x7fff7dd5d11e - rustc_query_impl[361a4cf8fe8cc9a1]::plumbing::query_key_hash_verify_all
38: 0x7fff7dd3cdad - RINvNtNtCsfUzTRJIdkm9_18rustc_query_system5query8plumbing17try_execute_queryINtCs4DZekDd09mT_16rustc_query_impl13DynamicConfigINtNtCs2KVqGvLot8v_21rustc_data_structures9vec_cache8VecCacheNtNtCsctD8KnfPWOA_10rustc_span6def_id8CrateNumINtNtNtCsawIwdSmi5Ly_12
39: 0x7fff7dc06fc6 - RINvNtNtCsfUzTRJIdkm9_18rustc_query_system5query8plumbing17try_execute_queryINtCs4DZekDd09mT_16rustc_query_impl13DynamicConfigINtNtB4_6caches10DefIdCacheINtNtNtCsawIwdSmi5Ly_12rustc_middle5query5erase6ErasedAhj10_EEKb0_KB3s_KB3s_ENtNtB1f_8plumbing9QueryCtx
40: 0x7fff7dd616d9 - rustc_query_impl[361a4cf8fe8cc9a1]::plumbing::query_key_hash_verify_all
41: 0x7fff7e423cd7 - <<rustc_middle[7a9f6d0772b0e5ea]::ty::context::TyCtxt>::expand_abstract_consts::Expander as rustc_type_ir[c6b2233d270133a9]::fold::TypeFolder<rustc_middle[7a9f6d0772b0e5ea]::ty::context::TyCtxt>>::fold_const
42: 0x7fff7cac9402 - rustc_trait_selection[380248135e80b586]::traits::const_evaluatable::is_const_evaluatable
43: 0x7fff7decf106 - <rustc_trait_selection[380248135e80b586]::traits::fulfill::FulfillProcessor as rustc_data_structures[201c6ced6e2f5255]::obligation_forest::ObligationProcessor>::process_obligation
44: 0x7fff7ddbb28f - <rustc_data_structures[201c6ced6e2f5255]::obligation_forest::ObligationForest<rustc_trait_selection[380248135e80b586]::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection[380248135e80b586]::traits::fulfill::FulfillProcessor>
45: 0x7fff7de3e9fb - <alloc[32e310b5ae9da1df]::raw_vec::RawVec<rustc_type_ir[c6b2233d270133a9]::search_graph::stack::StackEntry<rustc_middle[7a9f6d0772b0e5ea]::ty::context::TyCtxt>>>::grow_one
46: 0x7fff7d1ba229 - rustc_hir_analysis[f7c4d306c9c42c19]::check::wfcheck::check_well_formed
47: 0x7fff7d211a6c - rustc_hir_analysis[f7c4d306c9c42c19]::check_crate
48: 0x7fff7d1b322c - rustc_hir_analysis[f7c4d306c9c42c19]::check::wfcheck::check_well_formed
49: 0x7fff7dd5cb1b - rustc_query_impl[361a4cf8fe8cc9a1]::plumbing::query_key_hash_verify_all
50: 0x7fff7dc9f697 - RINvNtNtCsfUzTRJIdkm9_18rustc_query_system5query8plumbing17try_execute_queryINtCs4DZekDd09mT_16rustc_query_impl13DynamicConfigINtNtCs2KVqGvLot8v_21rustc_data_structures9vec_cache8VecCacheNtNtCsctD8KnfPWOA_10rustc_span6def_id10LocalDefIdINtNtNtCsawIwdSmi5Ly
51: 0x7fff7dd6b4a5 - rustc_query_impl[361a4cf8fe8cc9a1]::plumbing::query_key_hash_verify_all
52: 0x7fff7d1bdf5c - rustc_hir_analysis[f7c4d306c9c42c19]::check::wfcheck::check_type_wf
53: 0x7fff7c9c785b - <alloc[32e310b5ae9da1df]::sync::Arc<rustc_session[a3cae7cc1c4ed774]::cstore::CrateSource>>::drop_slow
54: 0x7fff7c8d5b8a - RINvNtNtCsfUzTRJIdkm9_18rustc_query_system5query8plumbing17try_execute_queryINtCs4DZekDd09mT_16rustc_query_impl13DynamicConfigINtNtB4_6caches11SingleCacheINtNtNtCsawIwdSmi5Ly_12rustc_middle5query5erase6ErasedAhj1_EEKb0_KB3s_KB3s_ENtNtB1f_8plumbing9QueryCtx
55: 0x7fff7c9dd263 - rustc_query_impl[361a4cf8fe8cc9a1]::query_system
56: 0x7fff7d205d3b - rustc_hir_analysis[f7c4d306c9c42c19]::check_crate
57: 0x7fff7ce8a0e6 - rustc_interface[d1b5364f93a0f68a]::passes::analysis
58: 0x7fff7c9cbf9a - <alloc[32e310b5ae9da1df]::sync::Arc<rustc_session[a3cae7cc1c4ed774]::cstore::CrateSource>>::drop_slow
59: 0x7fff7c8d187a - RINvNtNtCsfUzTRJIdkm9_18rustc_query_system5query8plumbing17try_execute_queryINtCs4DZekDd09mT_16rustc_query_impl13DynamicConfigINtNtB4_6caches11SingleCacheINtNtNtCsawIwdSmi5Ly_12rustc_middle5query5erase6ErasedAhj0_EEKb0_KB3s_KB3s_ENtNtB1f_8plumbing9QueryCtx
60: 0x7fff7c9d2393 - rustc_query_impl[361a4cf8fe8cc9a1]::query_system
61: 0x7fff79318390 - std[b79617825e2e9698]::sys::backtrace::__rust_begin_short_backtrace::<<std[b79617825e2e9698]::thread::Builder>::spawn_unchecked_<ctrlc[5263c6e5b7d8593f]::set_handler_inner<rustc_driver_impl[e9b880bf27d4a298]::install_ctrlc_handler::{closure#0}>::{closure#0}, ()>::{closure#1}::{closure#0}::{closure#0}, ()>
62: 0x7fff793129f6 - std[b79617825e2e9698]::sys::backtrace::__rust_begin_short_backtrace::<<std[b79617825e2e9698]::thread::Builder>::spawn_unchecked_<ctrlc[5263c6e5b7d8593f]::set_handler_inner<rustc_driver_impl[e9b880bf27d4a298]::install_ctrlc_handler::{closure#0}>::{closure#0}, ()>::{closure#1}::{closure#0}::{closure#0}, ()>
63: 0x7fff7930e3ef - RINvNtNtCsfLdZ09muTc2_3std3sys9backtrace28___rust_begin_short_backtraceNCNCINvNtCsi0gJWNUH6L6_15rustc_interface4util26run_in_thread_with_globalsNCINvB1e_31run_in_thread_pool_with_globalsNCINvNtB1g_9interface12run_compileruNCNvCsk45zuI9qXCS_17rustc_driver_i
64: 0x7fff7931c70d - std[b79617825e2e9698]::sys::backtrace::__rust_begin_short_backtrace::<<std[b79617825e2e9698]::thread::Builder>::spawn_unchecked_<ctrlc[5263c6e5b7d8593f]::set_handler_inner<rustc_driver_impl[e9b880bf27d4a298]::install_ctrlc_handler::{closure#0}>::{closure#0}, ()>::{closure#1}::{closure#0}::{closure#0}, ()>
65: 0x7fff7ce25a1d - alloc::boxed::impl$28::call_once
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\alloc\src\boxed.rs:1966
66: 0x7fff7ce25a1d - alloc::boxed::impl$28::call_once
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\alloc\src\boxed.rs:1966
67: 0x7fff7ce25a1d - std::sys::pal::windows::thread::impl$0::new::thread_start
at /rustc/c68340350c78eea402c4a85f8d9c1b7d3d607635/library\std\src\sys\pal\windows\thread.rs:56
68: 0x7ff84fc97374 - BaseThreadInitThunk
69: 0x7ff85139cc91 - RtlUserThreadStart
error: 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: please make sure that you have updated to the latest nightly
query stack during panic:
#0 [typeck] type-checking `X::{constant#0}`
#1 [thir_body] building THIR for `X::{constant#0}`
#2 [thir_abstract_const] building an abstract representation for `X::{constant#0}`
#3 [check_well_formed] checking that `X` is well-formed
#4 [check_type_wf] checking that types are well-formed
#5 [analysis] running analysis passes on this crate
end of query stack
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the reduced Rust program with the nightly compiler version described in the report. Start at compiler/rustc_middle/src/ty/sty.rs:365 and inspect ParamConst::find_ty_from_env alongside the backtrace's type-checking path. Done means this input no longer triggers an internal compiler error and instead produces an appropriate result or diagnostic.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 38/100