Skip to content

ICE: valtrees: 'called Result::unwrap() on an Err value: ReferencesError(ErrorGuaranteed(()))' #150969

@matthiaskrgr

Description

@matthiaskrgr

snippet:

#![feature(generic_const_exprs)]
#![feature(min_generic_const_args)]

fn pass_enum<const N : usize, const M : usize = const {N}> {
  pass_enum::<{None}>
}

Version information

rustc 1.94.0-nightly (08f833aa1 2026-01-11)
binary: rustc
commit-hash: 08f833aa179952037d5d0c5d949d4c3ec18ec212
commit-date: 2026-01-11
host: x86_64-unknown-linux-gnu
release: 1.94.0-nightly
LLVM version: 21.1.8

Possibly related line of code:

imm,
tcx.layout_of(typing_env.as_query_input(cv.ty)).unwrap(),
);
op_to_const(&ecx, &imm.into(), /* for diagnostics */ false)
}
ty::Tuple(_) | ty::Array(_, _) | ty::Adt(..) => {
let layout = tcx.layout_of(typing_env.as_query_input(cv.ty)).unwrap();
if layout.is_zst() {
// Fast path to avoid some allocations.
return mir::ConstValue::ZeroSized;
}
if layout.backend_repr.is_scalar()
&& (matches!(cv.ty.kind(), ty::Tuple(_))

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

Program output

error: missing parameters for function definition
 --> /tmp/icemaker_global_tempdir.5bj3Sy84Vvk6/rustc_testrunner_tmpdir_reporting.4zX0bTSOQEzX/mvce.rs:4:59
  |
4 | fn pass_enum<const N : usize, const M : usize = const {N}> {
  |                                                           ^
  |
help: add a parameter list
  |
4 | fn pass_enum<const N : usize, const M : usize = const {N}>() {
  |                                                           ++

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

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.5bj3Sy84Vvk6/rustc_testrunner_tmpdir_reporting.4zX0bTSOQEzX/mvce.rs:2:12
  |
2 | #![feature(min_generic_const_args)]
  |            ^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #132980 <https://github.com/rust-lang/rust/issues/132980> for more information

error[E0601]: `main` function not found in crate `mvce`
 --> /tmp/icemaker_global_tempdir.5bj3Sy84Vvk6/rustc_testrunner_tmpdir_reporting.4zX0bTSOQEzX/mvce.rs:6:2
  |
6 | }
  |  ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.5bj3Sy84Vvk6/rustc_testrunner_tmpdir_reporting.4zX0bTSOQEzX/mvce.rs`

error: defaults for generic parameters are not allowed here
 --> /tmp/icemaker_global_tempdir.5bj3Sy84Vvk6/rustc_testrunner_tmpdir_reporting.4zX0bTSOQEzX/mvce.rs:4:31
  |
4 | fn pass_enum<const N : usize, const M : usize = const {N}> {
  |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^

error[E0107]: missing generics for enum `Option`
   --> /tmp/icemaker_global_tempdir.5bj3Sy84Vvk6/rustc_testrunner_tmpdir_reporting.4zX0bTSOQEzX/mvce.rs:5:16
    |
  5 |   pass_enum::<{None}>
    |                ^^^^ expected 1 generic argument
    |
note: enum defined here, with 1 generic parameter: `T`
   --> /home/matthias/.rustup/toolchains/master/lib/rustlib/src/rust/library/core/src/option.rs:600:10
    |
600 | pub enum Option<T> {
    |          ^^^^^^ -
help: add missing generic argument
    |
  5 |   pass_enum::<{None<T>}>
    |                    +++


thread 'rustc' (4047645) panicked at /rustc-dev/08f833aa179952037d5d0c5d949d4c3ec18ec212/compiler/rustc_const_eval/src/const_eval/valtrees.rs:298:74:
called `Result::unwrap()` on an `Err` value: ReferencesError(ErrorGuaranteed(()))
stack backtrace:
   0:     0x7f5d4923fb73 - <<std[4ef27b15e8c8b39f]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[9b0602b26cbac703]::fmt::Display>::fmt
   1:     0x7f5d4980e308 - core[9b0602b26cbac703]::fmt::write
   2:     0x7f5d49255df6 - <std[4ef27b15e8c8b39f]::sys::stdio::unix::Stderr as std[4ef27b15e8c8b39f]::io::Write>::write_fmt
   3:     0x7f5d49215d48 - std[4ef27b15e8c8b39f]::panicking::default_hook::{closure#0}
   4:     0x7f5d49233403 - std[4ef27b15e8c8b39f]::panicking::default_hook
   5:     0x7f5d48216c4a - std[4ef27b15e8c8b39f]::panicking::update_hook::<alloc[be64b5636c6ea185]::boxed::Box<rustc_driver_impl[cb5a0d29d79f9b0b]::install_ice_hook::{closure#1}>>::{closure#0}
   6:     0x7f5d492336e2 - std[4ef27b15e8c8b39f]::panicking::panic_with_hook
   7:     0x7f5d49215e08 - std[4ef27b15e8c8b39f]::panicking::panic_handler::{closure#0}
   8:     0x7f5d4920a2b9 - std[4ef27b15e8c8b39f]::sys::backtrace::__rust_end_short_backtrace::<std[4ef27b15e8c8b39f]::panicking::panic_handler::{closure#0}, !>
   9:     0x7f5d492178dd - __rustc[4141da0a4ce75b43]::rust_begin_unwind
  10:     0x7f5d465f905c - core[9b0602b26cbac703]::panicking::panic_fmt
  11:     0x7f5d45ad3e82 - core[9b0602b26cbac703]::result::unwrap_failed
  12:     0x7f5d4a8643b4 - rustc_const_eval[a6a538f77ed30324]::const_eval::valtrees::valtree_to_const_value
  13:     0x7f5d4a863b2b - <rustc_const_eval[a6a538f77ed30324]::provide::{closure#1} as core[9b0602b26cbac703]::ops::function::FnOnce<(rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt, rustc_middle[927fbe768a54bf94]::ty::consts::valtree::Value)>>::call_once
  14:     0x7f5d4a863ad6 - rustc_query_impl[5c216bf84e04a0c]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[5c216bf84e04a0c]::query_impl::valtree_to_const_val::dynamic_query::{closure#2}::{closure#0}, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 24usize]>>
  15:     0x7f5d4a863a9f - <rustc_query_impl[5c216bf84e04a0c]::query_impl::valtree_to_const_val::dynamic_query::{closure#2} as core[9b0602b26cbac703]::ops::function::FnOnce<(rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt, rustc_middle[927fbe768a54bf94]::ty::consts::valtree::Value)>>::call_once
  16:     0x7f5d4a8630cc - rustc_query_system[d2dd35691c1a46d5]::query::plumbing::try_execute_query::<rustc_query_impl[5c216bf84e04a0c]::DynamicConfig<rustc_query_system[d2dd35691c1a46d5]::query::caches::DefaultCache<rustc_middle[927fbe768a54bf94]::ty::consts::valtree::Value, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[5c216bf84e04a0c]::plumbing::QueryCtxt, false>
  17:     0x7f5d4a862df5 - rustc_query_impl[5c216bf84e04a0c]::query_impl::valtree_to_const_val::get_query_non_incr::__rust_end_short_backtrace
  18:     0x7f5d4a88259a - <rustc_middle[927fbe768a54bf94]::mir::consts::Const>::eval
  19:     0x7f5d4a885984 - rustc_const_eval[a6a538f77ed30324]::const_eval::eval_queries::eval_to_allocation_raw_provider
  20:     0x7f5d4a884a46 - rustc_query_impl[5c216bf84e04a0c]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[5c216bf84e04a0c]::query_impl::eval_to_allocation_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 24usize]>>
  21:     0x7f5d4a88419f - rustc_query_system[d2dd35691c1a46d5]::query::plumbing::try_execute_query::<rustc_query_impl[5c216bf84e04a0c]::DynamicConfig<rustc_query_system[d2dd35691c1a46d5]::query::caches::DefaultCache<rustc_middle[927fbe768a54bf94]::ty::PseudoCanonicalInput<rustc_middle[927fbe768a54bf94]::mir::interpret::GlobalId>, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[5c216bf84e04a0c]::plumbing::QueryCtxt, false>
  22:     0x7f5d4a883d49 - rustc_query_impl[5c216bf84e04a0c]::query_impl::eval_to_allocation_raw::get_query_non_incr::__rust_end_short_backtrace
  23:     0x7f5d4a869345 - rustc_const_eval[a6a538f77ed30324]::const_eval::valtrees::eval_to_valtree
  24:     0x7f5d4a8690f6 - <rustc_const_eval[a6a538f77ed30324]::provide::{closure#0} as core[9b0602b26cbac703]::ops::function::FnOnce<(rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt, rustc_middle[927fbe768a54bf94]::ty::PseudoCanonicalInput<rustc_middle[927fbe768a54bf94]::mir::interpret::GlobalId>)>>::call_once
  25:     0x7f5d4a8690c0 - rustc_query_impl[5c216bf84e04a0c]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[5c216bf84e04a0c]::query_impl::eval_to_valtree::dynamic_query::{closure#2}::{closure#0}, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 16usize]>>
  26:     0x7f5d4a86907b - <rustc_query_impl[5c216bf84e04a0c]::query_impl::eval_to_valtree::dynamic_query::{closure#2} as core[9b0602b26cbac703]::ops::function::FnOnce<(rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt, rustc_middle[927fbe768a54bf94]::ty::PseudoCanonicalInput<rustc_middle[927fbe768a54bf94]::mir::interpret::GlobalId>)>>::call_once
  27:     0x7f5d4a261408 - rustc_query_system[d2dd35691c1a46d5]::query::plumbing::try_execute_query::<rustc_query_impl[5c216bf84e04a0c]::DynamicConfig<rustc_query_system[d2dd35691c1a46d5]::query::caches::DefaultCache<rustc_middle[927fbe768a54bf94]::ty::PseudoCanonicalInput<rustc_middle[927fbe768a54bf94]::mir::interpret::GlobalId>, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[5c216bf84e04a0c]::plumbing::QueryCtxt, false>
  28:     0x7f5d4a261030 - rustc_query_impl[5c216bf84e04a0c]::query_impl::eval_to_valtree::get_query_non_incr::__rust_end_short_backtrace
  29:     0x7f5d4689b50a - <rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt>::const_eval_resolve_for_typeck
  30:     0x7f5d499e4b56 - rustc_trait_selection[3fae8a94a2769d0d]::traits::try_evaluate_const
  31:     0x7f5d499d90fe - <rustc_trait_selection[3fae8a94a2769d0d]::traits::query::normalize::QueryNormalizer as rustc_type_ir[125e7728d77fb71d]::fold::FallibleTypeFolder<rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt>>::try_fold_const
  32:     0x7f5d499d6108 - <rustc_traits[d83a550a31027e56]::normalize_erasing_regions::provide::{closure#0} as core[9b0602b26cbac703]::ops::function::FnOnce<(rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt, rustc_middle[927fbe768a54bf94]::ty::PseudoCanonicalInput<rustc_middle[927fbe768a54bf94]::ty::generic_args::GenericArg>)>>::call_once
  33:     0x7f5d499d54e0 - rustc_query_impl[5c216bf84e04a0c]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[5c216bf84e04a0c]::query_impl::try_normalize_generic_arg_after_erasing_regions::dynamic_query::{closure#2}::{closure#0}, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 8usize]>>
  34:     0x7f5d499d470d - rustc_query_system[d2dd35691c1a46d5]::query::plumbing::try_execute_query::<rustc_query_impl[5c216bf84e04a0c]::DynamicConfig<rustc_query_system[d2dd35691c1a46d5]::query::caches::DefaultCache<rustc_middle[927fbe768a54bf94]::ty::PseudoCanonicalInput<rustc_middle[927fbe768a54bf94]::ty::generic_args::GenericArg>, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[5c216bf84e04a0c]::plumbing::QueryCtxt, false>
  35:     0x7f5d499d43d8 - rustc_query_impl[5c216bf84e04a0c]::query_impl::try_normalize_generic_arg_after_erasing_regions::get_query_non_incr::__rust_end_short_backtrace
  36:     0x7f5d4aa748c8 - <rustc_middle[927fbe768a54bf94]::ty::normalize_erasing_regions::TryNormalizeAfterErasingRegionsFolder as rustc_type_ir[125e7728d77fb71d]::fold::FallibleTypeFolder<rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt>>::try_fold_const
  37:     0x7f5d47a722dc - <rustc_hir_typeck[6bc7108e6ab36b3f]::writeback::EagerlyNormalizeConsts as rustc_type_ir[125e7728d77fb71d]::fold::TypeFolder<rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt>>::fold_const
  38:     0x7f5d484d014f - <rustc_middle[927fbe768a54bf94]::ty::generic_args::GenericArg as rustc_type_ir[125e7728d77fb71d]::fold::TypeFoldable<rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt>>::fold_with::<rustc_hir_typeck[6bc7108e6ab36b3f]::writeback::EagerlyNormalizeConsts>
  39:     0x7f5d484d2f76 - <&rustc_middle[927fbe768a54bf94]::ty::list::RawList<(), rustc_middle[927fbe768a54bf94]::ty::generic_args::GenericArg> as rustc_type_ir[125e7728d77fb71d]::fold::TypeFoldable<rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt>>::fold_with::<rustc_hir_typeck[6bc7108e6ab36b3f]::writeback::EagerlyNormalizeConsts>
  40:     0x7f5d478ad7c6 - <rustc_middle[927fbe768a54bf94]::ty::Ty as rustc_type_ir[125e7728d77fb71d]::fold::TypeSuperFoldable<rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt>>::super_fold_with::<rustc_hir_typeck[6bc7108e6ab36b3f]::writeback::EagerlyNormalizeConsts>
  41:     0x7f5d49bee7bf - <rustc_hir_typeck[6bc7108e6ab36b3f]::writeback::WritebackCx>::visit_node_id
  42:     0x7f5d4a52126a - <rustc_hir_typeck[6bc7108e6ab36b3f]::writeback::WritebackCx as rustc_hir[7fe254796a2591e6]::intravisit::Visitor>::visit_expr
  43:     0x7f5d4a526f65 - <rustc_hir_typeck[6bc7108e6ab36b3f]::fn_ctxt::FnCtxt>::resolve_type_vars_in_body
  44:     0x7f5d4a53d006 - rustc_hir_typeck[6bc7108e6ab36b3f]::typeck_with_inspect::{closure#0}
  45:     0x7f5d4a539674 - rustc_query_impl[5c216bf84e04a0c]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[5c216bf84e04a0c]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 8usize]>>
  46:     0x7f5d49a29a77 - rustc_query_system[d2dd35691c1a46d5]::query::plumbing::try_execute_query::<rustc_query_impl[5c216bf84e04a0c]::DynamicConfig<rustc_data_structures[e0806a14897e55a9]::vec_cache::VecCache<rustc_span[581a14f343ce28cf]::def_id::LocalDefId, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[d2dd35691c1a46d5]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[5c216bf84e04a0c]::plumbing::QueryCtxt, false>
  47:     0x7f5d49a29349 - rustc_query_impl[5c216bf84e04a0c]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
  48:     0x7f5d4a271bf3 - <rustc_middle[927fbe768a54bf94]::ty::context::TyCtxt>::par_hir_body_owners::<rustc_hir_analysis[5c94152ec3a3a6a4]::check_crate::{closure#2}>::{closure#0}
  49:     0x7f5d4a271604 - rustc_hir_analysis[5c94152ec3a3a6a4]::check_crate
  50:     0x7f5d49a23bdb - rustc_interface[7ff7c1edf762f4c3]::passes::analysis
  51:     0x7f5d49a23827 - rustc_query_impl[5c216bf84e04a0c]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[5c216bf84e04a0c]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 0usize]>>
  52:     0x7f5d4a98cca6 - rustc_query_system[d2dd35691c1a46d5]::query::plumbing::try_execute_query::<rustc_query_impl[5c216bf84e04a0c]::DynamicConfig<rustc_query_system[d2dd35691c1a46d5]::query::caches::SingleCache<rustc_middle[927fbe768a54bf94]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[5c216bf84e04a0c]::plumbing::QueryCtxt, false>
  53:     0x7f5d4a98c876 - rustc_query_impl[5c216bf84e04a0c]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  54:     0x7f5d4ab52314 - <rustc_interface[7ff7c1edf762f4c3]::passes::create_and_enter_global_ctxt<core[9b0602b26cbac703]::option::Option<rustc_interface[7ff7c1edf762f4c3]::queries::Linker>, rustc_driver_impl[cb5a0d29d79f9b0b]::run_compiler::{closure#0}::{closure#2}>::{closure#2} as core[9b0602b26cbac703]::ops::function::FnOnce<(&rustc_session[91ba16556b88832]::session::Session, rustc_middle[927fbe768a54bf94]::ty::context::CurrentGcx, alloc[be64b5636c6ea185]::sync::Arc<rustc_data_structures[e0806a14897e55a9]::jobserver::Proxy>, &std[4ef27b15e8c8b39f]::sync::once_lock::OnceLock<rustc_middle[927fbe768a54bf94]::ty::context::GlobalCtxt>, &rustc_data_structures[e0806a14897e55a9]::sync::worker_local::WorkerLocal<rustc_middle[927fbe768a54bf94]::arena::Arena>, &rustc_data_structures[e0806a14897e55a9]::sync::worker_local::WorkerLocal<rustc_hir[7fe254796a2591e6]::Arena>, rustc_driver_impl[cb5a0d29d79f9b0b]::run_compiler::{closure#0}::{closure#2})>>::call_once::{shim:vtable#0}
  55:     0x7f5d4aa01918 - rustc_interface[7ff7c1edf762f4c3]::interface::run_compiler::<(), rustc_driver_impl[cb5a0d29d79f9b0b]::run_compiler::{closure#0}>::{closure#1}
  56:     0x7f5d4a90a88e - std[4ef27b15e8c8b39f]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[7ff7c1edf762f4c3]::util::run_in_thread_with_globals<rustc_interface[7ff7c1edf762f4c3]::util::run_in_thread_pool_with_globals<rustc_interface[7ff7c1edf762f4c3]::interface::run_compiler<(), rustc_driver_impl[cb5a0d29d79f9b0b]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  57:     0x7f5d4a90a660 - <std[4ef27b15e8c8b39f]::thread::lifecycle::spawn_unchecked<rustc_interface[7ff7c1edf762f4c3]::util::run_in_thread_with_globals<rustc_interface[7ff7c1edf762f4c3]::util::run_in_thread_pool_with_globals<rustc_interface[7ff7c1edf762f4c3]::interface::run_compiler<(), rustc_driver_impl[cb5a0d29d79f9b0b]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[9b0602b26cbac703]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  58:     0x7f5d4a90cd38 - <std[4ef27b15e8c8b39f]::sys::thread::unix::Thread>::new::thread_start
  59:     0x7f5d4429698b - <unknown>
  60:     0x7f5d4431a9cc - <unknown>
  61:                0x0 - <unknown>

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

note: rustc 1.94.0-nightly (08f833aa1 2026-01-11) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [valtree_to_const_val] converting type-level constant value to MIR constant value
#1 [eval_to_allocation_raw] const-evaluating + checking `pass_enum::{constant#0}`
#2 [eval_to_valtree] evaluating type-level constant
#3 [try_normalize_generic_arg_after_erasing_regions] normalizing `const {N}`
#4 [typeck] type-checking `pass_enum`
#5 [analysis] running analysis passes on crate `mvce`
end of query stack
error: aborting due to 4 previous errors; 2 warnings emitted

Some errors have detailed explanations: E0107, E0601.
For more information about an error, try `rustc --explain E0107`.

@rustbot label +F-generic_const_exprs +F-min_generic_const_args

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.F-generic_const_exprs`#![feature(generic_const_exprs)]`F-min_generic_const_args`#![feature(min_generic_const_args)]`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 it if it has been sufficiently triaged.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions