Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE: type variables should not be hashed #109864

Open
uwuzote opened this issue Apr 2, 2023 · 1 comment
Open

ICE: type variables should not be hashed #109864

uwuzote opened this issue Apr 2, 2023 · 1 comment
Labels
C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@uwuzote
Copy link

uwuzote commented Apr 2, 2023

Code

struct S;
struct S2<P>();

trait Foo<A> {
    type Out;
}

trait Bar<A, B> {
    type Out;
}

trait Qux<A> {
    type Out;
}

trait Fuzz<A> {
    type Out;
}

impl<A: Foo<B>, B> Fuzz<S2<B>> for S2<A> {
    type Out = <<A as Foo<B>>::Out as Bar<
        S2<A>,
        <<<A as Foo<B>>::Out as Qux<S>>::Out as Fuzz<S2<B>>>::Out,
    >>::Out;
}

Build with cargo check or rustc main.rs --crate-type lib -C incremental=./target/debug/incremental -L dependency=./target/debug/deps

Meta

Runnng with rustc +nightly main.rs --crate-type lib -C incremental=./target/debug/incremental -L dependency=./target/debug/deps does not produce compiler panic

rustc --version --verbose:

rustc 1.67.1 (d5a82bbd2 2023-02-07)
binary: rustc
commit-hash: d5a82bbd26e1ad8b7401f6a718a9c57c96905483
commit-date: 2023-02-07
host: x86_64-unknown-linux-gnu
release: 1.67.1
LLVM version: 15.0.6

Error output

rustc main.rs --crate-type lib -C incremental=./target/debug/incremental -L dependency=./target/debug/deps:

error[E0392]: parameter `P` is never used
 --> main.rs:2:11
  |
2 | struct S2<P>();
  |           ^ unused parameter
  |
  = help: consider removing `P`, referring to it in a field, or using a marker such as `PhantomData`
  = help: if you intended `P` to be a const parameter, use `const P: usize` instead

error[E0277]: the trait bound `<A as Foo<B>>::Out: Qux<S>` is not satisfied
  --> main.rs:23:10
   |
23 |         <<<A as Foo<B>>::Out as Qux<S>>::Out as Fuzz<S2<B>>>::Out,
   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Qux<S>` is not implemented for `<A as Foo<B>>::Out`
   |
help: consider further restricting the associated type
   |
20 | impl<A: Foo<B>, B> Fuzz<S2<B>> for S2<A> where <A as Foo<B>>::Out: Qux<S> {
   |                                          ++++++++++++++++++++++++++++++++

thread 'rustc' panicked at 'type variables should not be hashed: _#1t', /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/compiler/rustc_type_ir/src/lib.rs:681:17
stack backtrace:
   0:     0x7f77e6a0b6fa - std::backtrace_rs::backtrace::libunwind::trace::h79937bc171ada62c
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f77e6a0b6fa - std::backtrace_rs::backtrace::trace_unsynchronized::h2292bca8571cb919
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f77e6a0b6fa - std::sys_common::backtrace::_print_fmt::h9c461f248e4ae90d
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x7f77e6a0b6fa - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::he9fe6bf1a39182e1
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f77e6a6e25e - core::fmt::write::h032658c119c720d7
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/fmt/mod.rs:1208:17
   5:     0x7f77e69fba85 - std::io::Write::write_fmt::h299fc90dfae41c0d
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/io/mod.rs:1682:15
   6:     0x7f77e6a0b4c5 - std::sys_common::backtrace::_print::heb70d25df9937e3f
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x7f77e6a0b4c5 - std::sys_common::backtrace::print::had745c0a76b8b521
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x7f77e6a0e20f - std::panicking::default_hook::{{closure}}::h1ea782cdfa2fd097
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:267:22
   9:     0x7f77e6a0df4b - std::panicking::default_hook::h1cc3af63455a163c
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:286:9
  10:     0x7f77e5860ab1 - <rustc_driver[5c3b90d1fb3964ba]::DEFAULT_HOOK::{closure#0}::{closure#0} as core[e6a29f2585b3d454]::ops::function::FnOnce<(&core[e6a29f2585b3d454]::panic::panic_info::PanicInfo,)>>::call_once::{shim:vtable#0}
  11:     0x7f77e6a0ea4d - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h6e4950ba7c0fd82a
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/alloc/src/boxed.rs:2032:9
  12:     0x7f77e6a0ea4d - std::panicking::rust_panic_with_hook::h5cafdc4b3bfd5528
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:692:13
  13:     0x7f77e6a0e7c9 - std::panicking::begin_panic_handler::{{closure}}::hf31c60f40775892c
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:579:13
  14:     0x7f77e6a0bbac - std::sys_common::backtrace::__rust_end_short_backtrace::h28a5c7be595826cd
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys_common/backtrace.rs:137:18
  15:     0x7f77e6a0e4d2 - rust_begin_unwind
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:575:5
  16:     0x7f77e6a6ac43 - core::panicking::panic_fmt::h8fa27a0b37dd98b7
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/panicking.rs:64:14
  17:     0x7f77e5d2d3c7 - <rustc_type_ir[9ee78e40cc0f9c7b]::InferTy as rustc_data_structures[1026114362f98086]::stable_hasher::HashStable<rustc_query_system[7dbbccfee5a2d054]::ich::hcx::StableHashingContext>>::hash_stable
  18:     0x7f77e3832f5b - <rustc_type_ir[9ee78e40cc0f9c7b]::ty_info::WithCachedTypeInfo<rustc_type_ir[9ee78e40cc0f9c7b]::sty::TyKind<rustc_middle[83f907612b22699d]::ty::context::TyCtxt>> as rustc_data_structures[1026114362f98086]::stable_hasher::HashStable<rustc_query_system[7dbbccfee5a2d054]::ich::hcx::StableHashingContext>>::hash_stable
  19:     0x7f77e403e49c - <&rustc_middle[83f907612b22699d]::ty::list::List<rustc_middle[83f907612b22699d]::ty::subst::GenericArg> as rustc_data_structures[1026114362f98086]::stable_hasher::HashStable<rustc_query_system[7dbbccfee5a2d054]::ich::hcx::StableHashingContext>>::hash_stable
  20:     0x7f77e4c38b86 - <rustc_data_structures[1026114362f98086]::intern::Interned<rustc_type_ir[9ee78e40cc0f9c7b]::ty_info::WithCachedTypeInfo<rustc_middle[83f907612b22699d]::ty::sty::Binder<rustc_middle[83f907612b22699d]::ty::PredicateKind>>> as rustc_data_structures[1026114362f98086]::stable_hasher::HashStable<rustc_query_system[7dbbccfee5a2d054]::ich::hcx::StableHashingContext>>::hash_stable
  21:     0x7f77e61c6c96 - <(rustc_middle[83f907612b22699d]::ty::Predicate, rustc_middle[83f907612b22699d]::traits::WellFormedLoc) as rustc_data_structures[1026114362f98086]::stable_hasher::HashStable<rustc_query_system[7dbbccfee5a2d054]::ich::hcx::StableHashingContext>>::hash_stable
  22:     0x7f77e6125bdd - <rustc_query_system[7dbbccfee5a2d054]::query::config::QueryVTable<rustc_query_impl[e214cefb6de2a99d]::plumbing::QueryCtxt, (rustc_middle[83f907612b22699d]::ty::Predicate, rustc_middle[83f907612b22699d]::traits::WellFormedLoc), core[e6a29f2585b3d454]::option::Option<rustc_middle[83f907612b22699d]::traits::ObligationCause>>>::to_dep_node
  23:     0x7f77e603310b - rustc_query_system[7dbbccfee5a2d054]::query::plumbing::try_execute_query::<rustc_query_impl[e214cefb6de2a99d]::plumbing::QueryCtxt, rustc_query_system[7dbbccfee5a2d054]::query::caches::ArenaCache<(rustc_middle[83f907612b22699d]::ty::Predicate, rustc_middle[83f907612b22699d]::traits::WellFormedLoc), core[e6a29f2585b3d454]::option::Option<rustc_middle[83f907612b22699d]::traits::ObligationCause>>>
  24:     0x7f77e60700e0 - rustc_query_system[7dbbccfee5a2d054]::query::plumbing::get_query::<rustc_query_impl[e214cefb6de2a99d]::queries::diagnostic_hir_wf_check, rustc_query_impl[e214cefb6de2a99d]::plumbing::QueryCtxt>
  25:     0x7f77e60b812b - <rustc_query_impl[e214cefb6de2a99d]::Queries as rustc_middle[83f907612b22699d]::ty::query::QueryEngine>::diagnostic_hir_wf_check
  26:     0x7f77e64b22b0 - <rustc_infer[ce51c2dc4d9f2303]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[945b70100f8dd3ec]::traits::error_reporting::TypeErrCtxtExt>::report_selection_error
  27:     0x7f77e64bc267 - <rustc_infer[ce51c2dc4d9f2303]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[945b70100f8dd3ec]::traits::error_reporting::InferCtxtPrivExt>::report_fulfillment_error
  28:     0x7f77e64b0554 - <rustc_infer[ce51c2dc4d9f2303]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[945b70100f8dd3ec]::traits::error_reporting::TypeErrCtxtExt>::report_fulfillment_errors
  29:     0x7f77e488a1ee - rustc_hir_analysis[44326659f1d3f01d]::check::wfcheck::check_associated_item
  30:     0x7f77e4881b97 - rustc_hir_analysis[44326659f1d3f01d]::check::wfcheck::check_well_formed
  31:     0x7f77e3a6028c - <rustc_query_system[7dbbccfee5a2d054]::dep_graph::graph::DepGraph<rustc_middle[83f907612b22699d]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[83f907612b22699d]::ty::context::TyCtxt, rustc_hir[dd085327af2d6b95]::hir_id::OwnerId, ()>
  32:     0x7f77e3a5ece0 - rustc_query_system[7dbbccfee5a2d054]::query::plumbing::get_query::<rustc_query_impl[e214cefb6de2a99d]::queries::check_well_formed, rustc_query_impl[e214cefb6de2a99d]::plumbing::QueryCtxt>
  33:     0x7f77e4c32608 - rustc_data_structures[1026114362f98086]::sync::par_for_each_in::<&[rustc_hir[dd085327af2d6b95]::hir::ImplItemId], <rustc_middle[83f907612b22699d]::hir::ModuleItems>::par_impl_items<rustc_hir_analysis[44326659f1d3f01d]::check::wfcheck::check_mod_type_wf::{closure#1}>::{closure#0}>
  34:     0x7f77e4c3242f - rustc_hir_analysis[44326659f1d3f01d]::check::wfcheck::check_mod_type_wf
  35:     0x7f77e440877c - <rustc_query_system[7dbbccfee5a2d054]::dep_graph::graph::DepGraph<rustc_middle[83f907612b22699d]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[83f907612b22699d]::ty::context::TyCtxt, rustc_span[41a321a6411ba4fa]::def_id::LocalDefId, ()>
  36:     0x7f77e440668e - rustc_query_system[7dbbccfee5a2d054]::query::plumbing::try_execute_query::<rustc_query_impl[e214cefb6de2a99d]::plumbing::QueryCtxt, rustc_query_system[7dbbccfee5a2d054]::query::caches::VecCache<rustc_span[41a321a6411ba4fa]::def_id::LocalDefId, ()>>
  37:     0x7f77e4c02ce3 - rustc_query_system[7dbbccfee5a2d054]::query::plumbing::get_query::<rustc_query_impl[e214cefb6de2a99d]::queries::check_mod_type_wf, rustc_query_impl[e214cefb6de2a99d]::plumbing::QueryCtxt>
  38:     0x7f77e3d5b5e8 - rustc_data_structures[1026114362f98086]::sync::par_for_each_in::<&[rustc_hir[dd085327af2d6b95]::hir_id::OwnerId], <rustc_middle[83f907612b22699d]::hir::map::Map>::par_for_each_module<rustc_hir_analysis[44326659f1d3f01d]::check_crate::{closure#5}::{closure#0}::{closure#0}>::{closure#0}>
  39:     0x7f77e3d5b3d3 - <rustc_session[b89b9f24749004e7]::session::Session>::track_errors::<rustc_hir_analysis[44326659f1d3f01d]::check_crate::{closure#5}, ()>
  40:     0x7f77e3d5aced - rustc_hir_analysis[44326659f1d3f01d]::check_crate
  41:     0x7f77e3d5a98b - rustc_interface[65dcc5dffb099e04]::passes::analysis
  42:     0x7f77e501291f - <rustc_query_system[7dbbccfee5a2d054]::dep_graph::graph::DepGraph<rustc_middle[83f907612b22699d]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[83f907612b22699d]::ty::context::TyCtxt, (), core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>>
  43:     0x7f77e5011a17 - rustc_query_system[7dbbccfee5a2d054]::query::plumbing::try_execute_query::<rustc_query_impl[e214cefb6de2a99d]::plumbing::QueryCtxt, rustc_query_system[7dbbccfee5a2d054]::query::caches::DefaultCache<(), core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>>>
  44:     0x7f77e5011470 - rustc_query_system[7dbbccfee5a2d054]::query::plumbing::get_query::<rustc_query_impl[e214cefb6de2a99d]::queries::analysis, rustc_query_impl[e214cefb6de2a99d]::plumbing::QueryCtxt>
  45:     0x7f77e4a241b3 - <rustc_interface[65dcc5dffb099e04]::passes::QueryContext>::enter::<rustc_driver[5c3b90d1fb3964ba]::run_compiler::{closure#1}::{closure#2}::{closure#2}, core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>>
  46:     0x7f77e4a20733 - <rustc_interface[65dcc5dffb099e04]::interface::Compiler>::enter::<rustc_driver[5c3b90d1fb3964ba]::run_compiler::{closure#1}::{closure#2}, core[e6a29f2585b3d454]::result::Result<core[e6a29f2585b3d454]::option::Option<rustc_interface[65dcc5dffb099e04]::queries::Linker>, rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>>
  47:     0x7f77e4a1b788 - rustc_span[41a321a6411ba4fa]::with_source_map::<core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>, rustc_interface[65dcc5dffb099e04]::interface::run_compiler<core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>, rustc_driver[5c3b90d1fb3964ba]::run_compiler::{closure#1}>::{closure#0}::{closure#0}>
  48:     0x7f77e4a1b275 - <scoped_tls[393dd8f8fd825c8d]::ScopedKey<rustc_span[41a321a6411ba4fa]::SessionGlobals>>::set::<rustc_interface[65dcc5dffb099e04]::interface::run_compiler<core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>, rustc_driver[5c3b90d1fb3964ba]::run_compiler::{closure#1}>::{closure#0}, core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>>
  49:     0x7f77e4a1a862 - std[359ab902947f5f0b]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[65dcc5dffb099e04]::util::run_in_thread_pool_with_globals<rustc_interface[65dcc5dffb099e04]::interface::run_compiler<core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>, rustc_driver[5c3b90d1fb3964ba]::run_compiler::{closure#1}>::{closure#0}, core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>>
  50:     0x7f77e5113b7a - <<std[359ab902947f5f0b]::thread::Builder>::spawn_unchecked_<rustc_interface[65dcc5dffb099e04]::util::run_in_thread_pool_with_globals<rustc_interface[65dcc5dffb099e04]::interface::run_compiler<core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>, rustc_driver[5c3b90d1fb3964ba]::run_compiler::{closure#1}>::{closure#0}, core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[e6a29f2585b3d454]::result::Result<(), rustc_errors[d24ea2395205e4f0]::ErrorGuaranteed>>::{closure#1} as core[e6a29f2585b3d454]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  51:     0x7f77e6a18803 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hb77d8d72ebcf79c4
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/alloc/src/boxed.rs:2000:9
  52:     0x7f77e6a18803 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hc08c3353e1568487
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/alloc/src/boxed.rs:2000:9
  53:     0x7f77e6a18803 - std::sys::unix::thread::Thread::new::thread_start::h7168e596cd5e5ce6
                               at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/sys/unix/thread.rs:108:17
  54:     0x7f77e24ae12d - start_thread
  55:     0x7f77e252fbc0 - clone3
  56:                0x0 - <unknown>

error: internal compiler error: unexpected panic

note: 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: rustc 1.67.1 (d5a82bbd2 2023-02-07) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type lib -C incremental=[REDACTED]

query stack during panic:
#0 [diagnostic_hir_wf_check] performing HIR wf-checking for predicate `Binder(TraitPredicate(<<A as Foo<B>>::Out as Bar<S2<A>, _>>, polarity:Positive), [])` at item `Ty(DefId(0:24 ~ main[7c5f]::{impl#0}::Out))`
#1 [check_well_formed] checking that `<impl at main.rs:20:1: 20:41>::Out` is well-formed
#2 [check_mod_type_wf] checking that types are well-formed in top-level module
#3 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 2 previous errors

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

cargo +beta build:

   Compiling xuwunum-rev v0.1.0 (/home/uwuzote/gh/rs/xuwunum-rev)
error[E0392]: parameter `P` is never used
 --> src/lib.rs:2:11
  |
2 | struct S2<P>();
  |           ^ unused parameter
  |
  = help: consider removing `P`, referring to it in a field, or using a marker such as `PhantomData`
  = help: if you intended `P` to be a const parameter, use `const P: usize` instead

error[E0277]: the trait bound `<A as Foo<B>>::Out: Qux<S>` is not satisfied
  --> src/lib.rs:23:10
   |
23 |         <<<A as Foo<B>>::Out as Qux<S>>::Out as Fuzz<S2<B>>>::Out,
   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Qux<S>` is not implemented for `<A as Foo<B>>::Out`
   |
help: consider further restricting the associated type
   |
20 | impl<A: Foo<B>, B> Fuzz<S2<B>> for S2<A> where <A as Foo<B>>::Out: Qux<S> {
   |                                          ++++++++++++++++++++++++++++++++

error[E0277]: the trait bound `<A as Foo<B>>::Out: Bar<S2<A>, _>` is not satisfied
  --> src/lib.rs:21:16
   |
21 |       type Out = <<A as Foo<B>>::Out as Bar<
   |  ________________^
22 | |         S2<A>,
23 | |         <<<A as Foo<B>>::Out as Qux<S>>::Out as Fuzz<S2<B>>>::Out,
24 | |     >>::Out;
   | |___________^ the trait `Bar<S2<A>, _>` is not implemented for `<A as Foo<B>>::Out`

Some errors have detailed explanations: E0277, E0392.
For more information about an error, try `rustc --explain E0277`.
error: could not compile `xuwunum-rev` due to 3 previous errors

rustc +nightly main.rs --crate-type lib -C incremental=./target/debug/incremental -L dependency=./target/debug/deps:

error[E0392]: parameter `P` is never used
 --> main.rs:2:11
  |
2 | struct S2<P>();
  |           ^ unused parameter
  |
  = help: consider removing `P`, referring to it in a field, or using a marker such as `PhantomData`
  = help: if you intended `P` to be a const parameter, use `const P: usize` instead

error[E0277]: the trait bound `<A as Foo<B>>::Out: Qux<S>` is not satisfied
  --> main.rs:23:10
   |
23 |         <<<A as Foo<B>>::Out as Qux<S>>::Out as Fuzz<S2<B>>>::Out,
   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Qux<S>` is not implemented for `<A as Foo<B>>::Out`
   |
help: consider further restricting the associated type
   |
20 | impl<A: Foo<B>, B> Fuzz<S2<B>> for S2<A> where <A as Foo<B>>::Out: Qux<S> {
   |                                          ++++++++++++++++++++++++++++++++

error[E0277]: the trait bound `<A as Foo<B>>::Out: Bar<S2<A>, _>` is not satisfied
  --> main.rs:21:16
   |
21 |       type Out = <<A as Foo<B>>::Out as Bar<
   |  ________________^
22 | |         S2<A>,
23 | |         <<<A as Foo<B>>::Out as Qux<S>>::Out as Fuzz<S2<B>>>::Out,
24 | |     >>::Out;
   | |___________^ the trait `Bar<S2<A>, _>` is not implemented for `<A as Foo<B>>::Out`

error: aborting due to 3 previous errors

Some errors have detailed explanations: E0277, E0392.
For more information about an error, try `rustc --explain E0277`.
Backtrace

```error[E0392]: parameter P is never used
--> src/lib.rs:2:11
|
2 | struct S2

();
| ^ unused parameter
|
= help: consider removing `P`, referring to it in a field, or using a marker such as `PhantomData`
= help: if you intended `P` to be a const parameter, use `const P: usize` instead

error[E0277]: the trait bound <A as Foo<B>>::Out: Qux<S> is not satisfied
--> src/lib.rs:23:10
|
23 | <<<A as Foo>::Out as Qux>::Out as Fuzz<S2>>::Out,
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait Qux<S> is not implemented for <A as Foo<B>>::Out
|
help: consider further restricting the associated type
|
20 | impl<A: Foo, B> Fuzz<S2> for S2 where <A as Foo>::Out: Qux {
| ++++++++++++++++++++++++++++++++

thread 'rustc' panicked at 'type variables should not be hashed: _#1t', /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/compiler/rustc_type_ir/src/lib.rs:681:17
stack backtrace:
0: rust_begin_unwind
at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/std/src/panicking.rs:575:5
1: core::panicking::panic_fmt
at /rustc/d5a82bbd26e1ad8b7401f6a718a9c57c96905483/library/core/src/panicking.rs:64:14
2: <rustc_type_ir::InferTy as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
3: <rustc_type_ir::ty_info::WithCachedTypeInfo<rustc_type_ir::sty::TyKind<rustc_middle::ty::context::TyCtxt>> as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
4: <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
5: <rustc_data_structures::intern::Interned<rustc_type_ir::ty_info::WithCachedTypeInfo<rustc_middle::ty::sty::Binder<rustc_middle::ty::PredicateKind>>> as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
6: <(rustc_middle::ty::Predicate, rustc_middle::traits::WellFormedLoc) as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
7: <rustc_query_system::query::config::QueryVTable<rustc_query_impl::plumbing::QueryCtxt, (rustc_middle::ty::Predicate, rustc_middle::traits::WellFormedLoc), core::option::Option<rustc_middle::traits::ObligationCause>>>::to_dep_node
8: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::ArenaCache<(rustc_middle::ty::Predicate, rustc_middle::traits::WellFormedLoc), core::option::Option<rustc_middle::traits::ObligationCause>>>
9: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::diagnostic_hir_wf_check, rustc_query_impl::plumbing::QueryCtxt>
10: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::diagnostic_hir_wf_check
11: <rustc_infer::infer::error_reporting::TypeErrCtxt as rustc_trait_selection::traits::error_reporting::TypeErrCtxtExt>::report_selection_error
12: <rustc_infer::infer::error_reporting::TypeErrCtxt as rustc_trait_selection::traits::error_reporting::InferCtxtPrivExt>::report_fulfillment_error
13: <rustc_infer::infer::error_reporting::TypeErrCtxt as rustc_trait_selection::traits::error_reporting::TypeErrCtxtExt>::report_fulfillment_errors
14: rustc_hir_analysis::check::wfcheck::check_associated_item
15: rustc_hir_analysis::check::wfcheck::check_well_formed
16: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, rustc_hir::hir_id::OwnerId, ()>
17: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::check_well_formed, rustc_query_impl::plumbing::QueryCtxt>
18: rustc_data_structures::sync::par_for_each_in::<&[rustc_hir::hir::ImplItemId], <rustc_middle::hir::ModuleItems>::par_impl_items<rustc_hir_analysis::check::wfcheck::check_mod_type_wf::{closure#1}>::{closure#0}>
19: rustc_hir_analysis::check::wfcheck::check_mod_type_wf
20: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, rustc_span::def_id::LocalDefId, ()>
21: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, ()>>
22: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::check_mod_type_wf, rustc_query_impl::plumbing::QueryCtxt>
23: rustc_data_structures::sync::par_for_each_in::<&[rustc_hir::hir_id::OwnerId], <rustc_middle::hir::map::Map>::par_for_each_module<rustc_hir_analysis::check_crate::{closure#5}::{closure#0}::{closure#0}>::{closure#0}>
24: <rustc_session::session::Session>::track_errors::<rustc_hir_analysis::check_crate::{closure#5}, ()>
25: rustc_hir_analysis::check_crate
26: rustc_interface::passes::analysis
27: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, (), core::result::Result<(), rustc_errors::ErrorGuaranteed>>
28: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<(), core::result::Result<(), rustc_errors::ErrorGuaranteed>>>
29: rustc_query_system::query::plumbing::get_query::<rustc_query_impl::queries::analysis, rustc_query_impl::plumbing::QueryCtxt>
30: <rustc_interface::passes::QueryContext>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}::{closure#2}, core::result::Result<(), rustc_errors::ErrorGuaranteed>>
31: <rustc_interface::interface::Compiler>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_errors::ErrorGuaranteed>>
32: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_driver::run_compiler::{closure#1}>::{closure#0}::{closure#0}>
33: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorGuaranteed>>
note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace.

error: internal compiler error: unexpected panic

note: 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: rustc 1.67.1 (d5a82bb 2023-02-07) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [diagnostic_hir_wf_check] performing HIR wf-checking for predicate Binder(TraitPredicate(<<A as Foo<B>>::Out as Bar<S2<A>, _>>, polarity:Positive), []) at item Ty(DefId(0:24 ~ xuwunum_rev[2847]::{impl#0}::Out))
#1 [check_well_formed] checking that <impl at src/lib.rs:20:1: 20:41>::Out is well-formed
#2 [check_mod_type_wf] checking that types are well-formed in top-level module
#3 [analysis] running analysis passes on this crate
end of query stack
Some errors have detailed explanations: E0277, E0392.
For more information about an error, try rustc --explain E0277.
error: could not compile xuwunum-rev due to 2 previous errors


</p>
</details>
@uwuzote uwuzote added C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Apr 2, 2023
@Nilstrieb
Copy link
Member

Thank you so much for providing a minimial reproduction ❤️

But as far as I know, this issue is already fixed on nightly (and I think beta too now). Although I was unable to reproduce this on 1.67.2 stable (which should not have the fix) so you should try yourself to make sure before closing.

@jyn514 jyn514 changed the title Compiler panics ICE: type variables should not be hashed Apr 7, 2023
@jyn514 jyn514 added S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Apr 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

3 participants