- Notifications
You must be signed in to change notification settings - Fork 14k
Open
Labels
C-bugCategory: This is a bug.Category: This is a bug.F-with_negative_coherence`#![feature(with_negative_coherence)]``#![feature(with_negative_coherence)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant 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.This issue may need triage. Remove it if it has been sufficiently triaged.
Description
auto-reduced (treereduce-rust):
#![feature(with_negative_coherence)] trait ExampleTrait { type AssociatedType; } impl<T, const N: usize> ExampleTrait for [T; N] { } pub struct Happy<T> { , } impl<T> ExampleTrait for Happy<T> { } impl<T, const MYSIZE: usize> ExampleTrait for Happy<T> where [T; MYSIZE]: , <[T; MYSIZE] as T>::AssociatedType: Clone, [T; N]: , // 💣 <[T; MYSIZE] as ExampleTrait>::AssociatedType: Clone, { }original:
trait ExampleTrait { type AssociatedType; } impl<T, const N: usize> ExampleTrait for [T; N] { type AssociatedType = T; } pub struct Happy<T> { arr: [Happy; MYSIZE], } impl<T> ExampleTrait for Happy<T> where [T; 10]: ExampleTrait, <[T; 10] as ExampleTrait>::AssociatedType: Clone, [T; 10]: ExampleTrait, <[T; 10] as ExampleTrait>::AssociatedType: Clone, { type AssociatedType = T; } pub const MYSIZE: usize = 10; pub struct Sad<T> { arr: [T; MYSIZE], } impl<T, const MYSIZE: usize> ExampleTrait for Happy<T> where [T; MYSIZE]: ExampleTrait, <[T; MYSIZE] as T>::AssociatedType: Clone, [T; N]: ExampleTrait, // 💣 <[T; MYSIZE] as ExampleTrait>::AssociatedType: Clone, { type AssociatedType = T; }Version information
rustc 1.93.0-nightly (c90bcb957 2025-11-06) binary: rustc commit-hash: c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 commit-date: 2025-11-06 host: x86_64-unknown-linux-gnu release: 1.93.0-nightly LLVM version: 21.1.3 Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zcrate-attr=feature(with_negative_coherence)
Program output
error: expected identifier, found `,` --> /tmp/icemaker_global_tempdir.zD8pQUt7PVI8/rustc_testrunner_tmpdir_reporting.UI4hL7vNdrSM/mvce.rs:11:5 | 10 | pub struct Happy<T> { | ----- while parsing this struct 11 | , | ^ expected identifier error[E0404]: expected trait, found type parameter `T` --> /tmp/icemaker_global_tempdir.zD8pQUt7PVI8/rustc_testrunner_tmpdir_reporting.UI4hL7vNdrSM/mvce.rs:26:21 | 23 | impl<T, const MYSIZE: usize> ExampleTrait for Happy<T> | - found this type parameter ... 26 | <[T; MYSIZE] as T>::AssociatedType: Clone, | ^ not a trait error[E0425]: cannot find value `N` in this scope --> /tmp/icemaker_global_tempdir.zD8pQUt7PVI8/rustc_testrunner_tmpdir_reporting.UI4hL7vNdrSM/mvce.rs:27:9 | 27 | [T; N]: , // 💣 | ^ not found in this scope error[E0601]: `main` function not found in crate `mvce` --> /tmp/icemaker_global_tempdir.zD8pQUt7PVI8/rustc_testrunner_tmpdir_reporting.UI4hL7vNdrSM/mvce.rs:31:2 | 31 | } | ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.zD8pQUt7PVI8/rustc_testrunner_tmpdir_reporting.UI4hL7vNdrSM/mvce.rs` thread 'rustc' (1257200) panicked at /rustc-dev/c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38/compiler/rustc_type_ir/src/inherent.rs:580:13: cannot find `!BoundConst { var: 1 }` in param-env: ParamEnv { caller_bounds: [ Binder { value: TraitPredicate(<!0 as std::marker::Sized>, polarity:Positive), bound_vars: [] }, ], } stack backtrace: 0: 0x7f8944a5f223 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hde21067283f7e82e 1: 0x7f8945201afc - core::fmt::write::h24186904251c31cb 2: 0x7f8944a13d93 - std::io::Write::write_fmt::h3ab9f1f4d8d19b72 3: 0x7f8944a253a2 - std::sys::backtrace::BacktraceLock::print::he038489aba5894a6 4: 0x7f8944a2b3f9 - std::panicking::default_hook::{{closure}}::h80a26d916c49679b 5: 0x7f8944a2af23 - std::panicking::default_hook::he2e9efee79b3dce9 6: 0x7f8943a20c91 - std[e95ebcffb71a5621]::panicking::update_hook::<alloc[6ba2be5df7d20276]::boxed::Box<rustc_driver_impl[8bc3447375e6b2d8]::install_ice_hook::{closure#1}>>::{closure#0} 7: 0x7f8944a2b81f - std::panicking::panic_with_hook::hf5648b7cec6bc73e 8: 0x7f8944a2b5da - std::panicking::panic_handler::{{closure}}::h1b2ed3864ba94359 9: 0x7f8944a254e9 - std::sys::backtrace::__rust_end_short_backtrace::hd0186b2b27f5aaa7 10: 0x7f8944a060dd - __rustc[f7dae8b92efe1d7a]::rust_begin_unwind 11: 0x7f8941a72000 - core::panicking::panic_fmt::hb5d6b83773432920 12: 0x7f8945dab661 - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::search_graph::SearchGraphDelegate<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate> as rustc_type_ir[5e1db4e3d840b3d9]::search_graph::Delegate>::compute_goal::{closure#0} 13: 0x7f8945dc1257 - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::evaluate_goal_raw 14: 0x7f8945db13bc - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::try_evaluate_added_goals 15: 0x7f8945f58750 - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::evaluate_added_goals_and_make_canonical_response 16: 0x7f8945da60fb - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::assemble_impl_candidates::<rustc_type_ir[5e1db4e3d840b3d9]::predicate::TraitPredicate<rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::{closure#0} 17: 0x7f8945da17e6 - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::compute_trait_goal 18: 0x7f8945daadff - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::search_graph::SearchGraphDelegate<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate> as rustc_type_ir[5e1db4e3d840b3d9]::search_graph::Delegate>::compute_goal::{closure#0} 19: 0x7f8945dc1257 - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::evaluate_goal_raw 20: 0x7f8945db176d - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::try_evaluate_added_goals 21: 0x7f8945daa4f1 - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::search_graph::SearchGraphDelegate<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate> as rustc_type_ir[5e1db4e3d840b3d9]::search_graph::Delegate>::compute_goal::{closure#0} 22: 0x7f8945dc1257 - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::evaluate_goal_raw 23: 0x7f8945db13bc - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::try_evaluate_added_goals 24: 0x7f8945da2b7c - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::compute_trait_goal 25: 0x7f8945daa04b - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::search_graph::SearchGraphDelegate<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate> as rustc_type_ir[5e1db4e3d840b3d9]::search_graph::Delegate>::compute_goal::{closure#0} 26: 0x7f8945dc1257 - <rustc_next_trait_solver[80d5b8e7e915485e]::solve::eval_ctxt::EvalCtxt<rustc_trait_selection[47719877e32dbd7c]::solve::delegate::SolverDelegate, rustc_middle[9ce76f953d15e2f6]::ty::context::TyCtxt>>::evaluate_goal_raw 27: 0x7f8945db69c3 - <rustc_trait_selection[47719877e32dbd7c]::solve::fulfill::FulfillmentCtxt<rustc_infer[35191db886fd87e]::traits::engine::ScrubbedTraitError> as rustc_infer[35191db886fd87e]::traits::engine::TraitEngine<rustc_infer[35191db886fd87e]::traits::engine::ScrubbedTraitError>>::evaluate_obligations_error_on_ambiguity 28: 0x7f8944883e1e - rustc_trait_selection[47719877e32dbd7c]::traits::coherence::impl_intersection_has_negative_obligation 29: 0x7f8945dbeb0c - rustc_trait_selection[47719877e32dbd7c]::traits::coherence::overlap 30: 0x7f8941f51e62 - <rustc_middle[9ce76f953d15e2f6]::traits::specialization_graph::Children as rustc_trait_selection[47719877e32dbd7c]::traits::specialize::specialization_graph::ChildrenExt>::insert 31: 0x7f8945306e88 - <rustc_middle[9ce76f953d15e2f6]::traits::specialization_graph::Graph as rustc_trait_selection[47719877e32dbd7c]::traits::specialize::specialization_graph::GraphExt>::insert 32: 0x7f8945308368 - rustc_trait_selection[47719877e32dbd7c]::traits::specialize::specialization_graph_provider 33: 0x7f8945307d8d - rustc_query_impl[8ae232d5147ca84e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ae232d5147ca84e]::query_impl::specialization_graph_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 8usize]>> 34: 0x7f894521c806 - rustc_query_system[41b9c06994168e52]::query::plumbing::try_execute_query::<rustc_query_impl[8ae232d5147ca84e]::DynamicConfig<rustc_query_system[41b9c06994168e52]::query::caches::DefIdCache<rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8ae232d5147ca84e]::plumbing::QueryCtxt, false> 35: 0x7f89459d1337 - rustc_query_impl[8ae232d5147ca84e]::query_impl::specialization_graph_of::get_query_non_incr::__rust_end_short_backtrace 36: 0x7f89459d1690 - rustc_hir_analysis[5cd9912eb92b8e51]::coherence::coherent_trait 37: 0x7f89459d135f - rustc_query_impl[8ae232d5147ca84e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ae232d5147ca84e]::query_impl::coherent_trait::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 1usize]>> 38: 0x7f8945a3c523 - rustc_query_system[41b9c06994168e52]::query::plumbing::try_execute_query::<rustc_query_impl[8ae232d5147ca84e]::DynamicConfig<rustc_query_system[41b9c06994168e52]::query::caches::DefIdCache<rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[8ae232d5147ca84e]::plumbing::QueryCtxt, false> 39: 0x7f8945a3b5a4 - rustc_query_impl[8ae232d5147ca84e]::query_impl::coherent_trait::get_query_non_incr::__rust_end_short_backtrace 40: 0x7f89459de2fb - rustc_hir_analysis[5cd9912eb92b8e51]::check::check::check_item_type 41: 0x7f89459db39c - rustc_hir_analysis[5cd9912eb92b8e51]::check::wfcheck::check_well_formed 42: 0x7f89459db375 - rustc_query_impl[8ae232d5147ca84e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ae232d5147ca84e]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 1usize]>> 43: 0x7f89459dabec - rustc_query_system[41b9c06994168e52]::query::plumbing::try_execute_query::<rustc_query_impl[8ae232d5147ca84e]::DynamicConfig<rustc_data_structures[de67cf687b97999a]::vec_cache::VecCache<rustc_span[28eed06c8d001cb1]::def_id::LocalDefId, rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[41b9c06994168e52]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[8ae232d5147ca84e]::plumbing::QueryCtxt, false> 44: 0x7f89459da702 - rustc_query_impl[8ae232d5147ca84e]::query_impl::check_well_formed::get_query_non_incr::__rust_end_short_backtrace 45: 0x7f89459d7c70 - rustc_hir_analysis[5cd9912eb92b8e51]::check::wfcheck::check_type_wf 46: 0x7f89459d7b5d - rustc_query_impl[8ae232d5147ca84e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ae232d5147ca84e]::query_impl::check_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 1usize]>> 47: 0x7f8946296948 - rustc_query_system[41b9c06994168e52]::query::plumbing::try_execute_query::<rustc_query_impl[8ae232d5147ca84e]::DynamicConfig<rustc_query_system[41b9c06994168e52]::query::caches::SingleCache<rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[8ae232d5147ca84e]::plumbing::QueryCtxt, false> 48: 0x7f894629670e - rustc_query_impl[8ae232d5147ca84e]::query_impl::check_type_wf::get_query_non_incr::__rust_end_short_backtrace 49: 0x7f894553acba - rustc_hir_analysis[5cd9912eb92b8e51]::check_crate 50: 0x7f8945521ab0 - rustc_interface[d5ff205a9ab97820]::passes::analysis 51: 0x7f8945521773 - rustc_query_impl[8ae232d5147ca84e]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8ae232d5147ca84e]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 0usize]>> 52: 0x7f894629d360 - rustc_query_system[41b9c06994168e52]::query::plumbing::try_execute_query::<rustc_query_impl[8ae232d5147ca84e]::DynamicConfig<rustc_query_system[41b9c06994168e52]::query::caches::SingleCache<rustc_middle[9ce76f953d15e2f6]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[8ae232d5147ca84e]::plumbing::QueryCtxt, false> 53: 0x7f894629cfb6 - rustc_query_impl[8ae232d5147ca84e]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace 54: 0x7f894655a00a - <rustc_interface[d5ff205a9ab97820]::passes::create_and_enter_global_ctxt<core[a4c7c2348b0f0abe]::option::Option<rustc_interface[d5ff205a9ab97820]::queries::Linker>, rustc_driver_impl[8bc3447375e6b2d8]::run_compiler::{closure#0}::{closure#2}>::{closure#2} as core[a4c7c2348b0f0abe]::ops::function::FnOnce<(&rustc_session[84c9ddeb8f325268]::session::Session, rustc_middle[9ce76f953d15e2f6]::ty::context::CurrentGcx, alloc[6ba2be5df7d20276]::sync::Arc<rustc_data_structures[de67cf687b97999a]::jobserver::Proxy>, &std[e95ebcffb71a5621]::sync::once_lock::OnceLock<rustc_middle[9ce76f953d15e2f6]::ty::context::GlobalCtxt>, &rustc_data_structures[de67cf687b97999a]::sync::worker_local::WorkerLocal<rustc_middle[9ce76f953d15e2f6]::arena::Arena>, &rustc_data_structures[de67cf687b97999a]::sync::worker_local::WorkerLocal<rustc_hir[1534e3459f232f80]::Arena>, rustc_driver_impl[8bc3447375e6b2d8]::run_compiler::{closure#0}::{closure#2})>>::call_once::{shim:vtable#0} 55: 0x7f89463fbfe9 - rustc_interface[d5ff205a9ab97820]::interface::run_compiler::<(), rustc_driver_impl[8bc3447375e6b2d8]::run_compiler::{closure#0}>::{closure#1} 56: 0x7f8946090e3c - std[e95ebcffb71a5621]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[d5ff205a9ab97820]::util::run_in_thread_with_globals<rustc_interface[d5ff205a9ab97820]::util::run_in_thread_pool_with_globals<rustc_interface[d5ff205a9ab97820]::interface::run_compiler<(), rustc_driver_impl[8bc3447375e6b2d8]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()> 57: 0x7f8946090b20 - <<std[e95ebcffb71a5621]::thread::Builder>::spawn_unchecked_<rustc_interface[d5ff205a9ab97820]::util::run_in_thread_with_globals<rustc_interface[d5ff205a9ab97820]::util::run_in_thread_pool_with_globals<rustc_interface[d5ff205a9ab97820]::interface::run_compiler<(), rustc_driver_impl[8bc3447375e6b2d8]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[a4c7c2348b0f0abe]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 58: 0x7f8946095daf - std::sys::thread::unix::Thread::new::thread_start::hb3dc6483caa1b987 59: 0x7f893fa969cb - <unknown> 60: 0x7f893fb1aa0c - <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.93.0-nightly (c90bcb957 2025-11-06) running on x86_64-unknown-linux-gnu note: compiler flags: -Z crate-attr=feature(with_negative_coherence) -Z dump-mir-dir=dir query stack during panic: #0 [specialization_graph_of] building specialization graph of trait `ExampleTrait` #1 [coherent_trait] coherence checking all impls of trait `ExampleTrait` #2 [check_well_formed] checking that `<impl at /tmp/icemaker_global_tempdir.zD8pQUt7PVI8/rustc_testrunner_tmpdir_reporting.UI4hL7vNdrSM/mvce.rs:5:1: 5:48>` is well-formed #3 [check_type_wf] checking that types are well-formed #4 [analysis] running analysis passes on crate `mvce` end of query stack error[E0392]: type parameter `T` is never used --> /tmp/icemaker_global_tempdir.zD8pQUt7PVI8/rustc_testrunner_tmpdir_reporting.UI4hL7vNdrSM/mvce.rs:10:18 | 10 | pub struct Happy<T> { | ^ unused type parameter | = help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData` = help: if you intended `T` to be a const parameter, use `const T: /* Type */` instead error: aborting due to 5 previous errors Some errors have detailed explanations: E0392, E0404, E0425, E0601. For more information about an error, try `rustc --explain E0392`. @rustbot label +F-with_negative_coherence
Metadata
Metadata
Assignees
Labels
C-bugCategory: This is a bug.Category: This is a bug.F-with_negative_coherence`#![feature(with_negative_coherence)]``#![feature(with_negative_coherence)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant 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.This issue may need triage. Remove it if it has been sufficiently triaged.