rust icon indicating copy to clipboard operation
rust copied to clipboard

ICE when using non-lifetimes in `for<>`

Open aldanor opened this issue 1 year ago • 1 comments

Code

trait Kind<'a, T> { type This: 'a; }
type This<'a, T, K> = <K as Kind<'a, T>>::This;
struct X<'a, K: for<T: 'a> Kind<'a, T>>;

(this is invalid syntax but it shouldn't ICE)

Meta

rustc --version --verbose:

1.62.1

Error output

error: only lifetime parameters can be used in this context
  --> src/main.rs:27:21
   |
27 | struct X<'a, K: for<T: 'a> Kind<'a, T>>;
   |                     ^

thread 'rustc' panicked at 'no entry found for key', compiler/rustc_typeck/src/astconv/mod.rs:2273:29
Backtrace

thread 'rustc' panicked at 'no entry found for key', compiler/rustc_typeck/src/astconv/mod.rs:2273:29
stack backtrace:
   0:     0x7f453adc1fbd - std::backtrace_rs::backtrace::libunwind::trace::h8e036432725b1c57
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f453adc1fbd - std::backtrace_rs::backtrace::trace_unsynchronized::h4f83092254c85869
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f453adc1fbd - std::sys_common::backtrace::_print_fmt::h9728b5e056a3ece3
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x7f453adc1fbd - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h48bb4bd2928827d2
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x7f453ae1dc4c - core::fmt::write::h909e69a2c24f44cc
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/fmt/mod.rs:1196:17
   5:     0x7f453adb3731 - std::io::Write::write_fmt::h7f4b8ab8af89e9ef
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/io/mod.rs:1654:15
   6:     0x7f453adc4cd5 - std::sys_common::backtrace::_print::hff4838ebf14a2171
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x7f453adc4cd5 - std::sys_common::backtrace::print::h2499280374189ad9
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x7f453adc4cd5 - std::panicking::default_hook::{{closure}}::h8b270fc55eeb284e
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:295:22
   9:     0x7f453adc4949 - std::panicking::default_hook::h3217e229d6e9d13c
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:314:9
  10:     0x7f453b589571 - rustc_driver[b4654d3c4d4292dd]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7f453adc54a6 - std::panicking::rust_panic_with_hook::h9acb8048b738d2e0
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:702:17
  12:     0x7f453adc52a7 - std::panicking::begin_panic_handler::{{closure}}::h70f3b839526af6dc
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:588:13
  13:     0x7f453adc2474 - std::sys_common::backtrace::__rust_end_short_backtrace::h1ecf2cee857fbe0a
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/sys_common/backtrace.rs:138:18
  14:     0x7f453adc4fd9 - rust_begin_unwind
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/panicking.rs:584:5
  15:     0x7f453ad8a253 - core::panicking::panic_fmt::h9f8393e7fd56d655
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/panicking.rs:142:14
  16:     0x7f453ae1a8b1 - core::panicking::panic_display::he99cdc22380c31de
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/panicking.rs:72:5
  17:     0x7f453ae1a85b - core::panicking::panic_str::hce6f990cfce94fc7
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/panicking.rs:56:5
  18:     0x7f453ad8a0c6 - core::option::expect_failed::hb4b987dd6d9ee8f8
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/core/src/option.rs:1854:5
  19:     0x7f453cb1b792 - <dyn rustc_typeck[8647eb72137f70a2]::astconv::AstConv>::res_to_ty
  20:     0x7f453cb24450 - <dyn rustc_typeck[8647eb72137f70a2]::astconv::AstConv>::ast_ty_to_ty_inner
  21:     0x7f453cb2142f - <dyn rustc_typeck[8647eb72137f70a2]::astconv::AstConv>::create_substs_for_ast_path
  22:     0x7f453cb0ea64 - <dyn rustc_typeck[8647eb72137f70a2]::astconv::AstConv>::instantiate_poly_trait_ref_inner
  23:     0x7f453cb2363d - <dyn rustc_typeck[8647eb72137f70a2]::astconv::AstConv>::instantiate_poly_trait_ref
  24:     0x7f453d8abedc - <dyn rustc_typeck[8647eb72137f70a2]::astconv::AstConv>::add_bounds::<core[dbea6f494faa966e]::slice::iter::Iter<rustc_hir[597a1a56ef61745a]::hir::GenericBound>>
  25:     0x7f453cab0f0a - rustc_typeck[8647eb72137f70a2]::collect::gather_explicit_predicates_of
  26:     0x7f453cab271f - rustc_typeck[8647eb72137f70a2]::collect::explicit_predicates_of
  27:     0x7f453d08fea8 - rustc_query_system[b4bd2ce220f7e42d]::query::plumbing::get_query::<rustc_query_impl[4e222bcb6a32466d]::queries::explicit_predicates_of, rustc_query_impl[4e222bcb6a32466d]::plumbing::QueryCtxt>
  28:     0x7f453d01dd3e - <rustc_query_impl[4e222bcb6a32466d]::Queries as rustc_middle[74ddc95a19f9493f]::ty::query::QueryEngine>::explicit_predicates_of
  29:     0x7f453caaf914 - rustc_typeck[8647eb72137f70a2]::collect::predicates_defined_on
  30:     0x7f453d08d9a8 - rustc_query_system[b4bd2ce220f7e42d]::query::plumbing::get_query::<rustc_query_impl[4e222bcb6a32466d]::queries::predicates_defined_on, rustc_query_impl[4e222bcb6a32466d]::plumbing::QueryCtxt>
  31:     0x7f453d01dd0e - <rustc_query_impl[4e222bcb6a32466d]::Queries as rustc_middle[74ddc95a19f9493f]::ty::query::QueryEngine>::predicates_defined_on
  32:     0x7f453caaff4a - rustc_typeck[8647eb72137f70a2]::collect::predicates_of
  33:     0x7f453d07b402 - rustc_query_system[b4bd2ce220f7e42d]::query::plumbing::get_query::<rustc_query_impl[4e222bcb6a32466d]::queries::predicates_of, rustc_query_impl[4e222bcb6a32466d]::plumbing::QueryCtxt>
  34:     0x7f453d01cf5e - <rustc_query_impl[4e222bcb6a32466d]::Queries as rustc_middle[74ddc95a19f9493f]::ty::query::QueryEngine>::predicates_of
  35:     0x7f453caa4bde - <rustc_typeck[8647eb72137f70a2]::collect::CollectItemTypesVisitor as rustc_hir[597a1a56ef61745a]::intravisit::Visitor>::visit_item
  36:     0x7f453cb363c0 - <rustc_middle[74ddc95a19f9493f]::hir::map::Map>::visit_item_likes_in_module::<rustc_hir[597a1a56ef61745a]::intravisit::DeepVisitor<rustc_typeck[8647eb72137f70a2]::collect::CollectItemTypesVisitor>>
  37:     0x7f453d86ee89 - rustc_typeck[8647eb72137f70a2]::collect::collect_mod_item_types
  38:     0x7f453d055bc0 - rustc_query_system[b4bd2ce220f7e42d]::query::plumbing::try_execute_query::<rustc_query_impl[4e222bcb6a32466d]::plumbing::QueryCtxt, rustc_query_system[b4bd2ce220f7e42d]::query::caches::DefaultCache<rustc_span[1d0b4d44d1f53955]::def_id::LocalDefId, ()>>
  39:     0x7f453dbaecc3 - rustc_query_system[b4bd2ce220f7e42d]::query::plumbing::get_query::<rustc_query_impl[4e222bcb6a32466d]::queries::collect_mod_item_types, rustc_query_impl[4e222bcb6a32466d]::plumbing::QueryCtxt>
  40:     0x7f453d8bf4ed - <rustc_middle[74ddc95a19f9493f]::hir::map::Map>::for_each_module::<rustc_typeck[8647eb72137f70a2]::check_crate::{closure#0}::{closure#0}::{closure#0}>
  41:     0x7f453d894e15 - <rustc_session[a2f3190f51a45935]::session::Session>::track_errors::<rustc_typeck[8647eb72137f70a2]::check_crate::{closure#0}, ()>
  42:     0x7f453d87e540 - rustc_typeck[8647eb72137f70a2]::check_crate
  43:     0x7f453d626f87 - rustc_interface[9f664daa3237129]::passes::analysis
  44:     0x7f453db78334 - rustc_query_system[b4bd2ce220f7e42d]::query::plumbing::try_execute_query::<rustc_query_impl[4e222bcb6a32466d]::plumbing::QueryCtxt, rustc_query_system[b4bd2ce220f7e42d]::query::caches::DefaultCache<(), core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>>>
  45:     0x7f453dbb98ce - rustc_query_system[b4bd2ce220f7e42d]::query::plumbing::get_query::<rustc_query_impl[4e222bcb6a32466d]::queries::analysis, rustc_query_impl[4e222bcb6a32466d]::plumbing::QueryCtxt>
  46:     0x7f453d607777 - <rustc_interface[9f664daa3237129]::passes::QueryContext>::enter::<rustc_driver[b4654d3c4d4292dd]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>>
  47:     0x7f453d5f2708 - <rustc_interface[9f664daa3237129]::interface::Compiler>::enter::<rustc_driver[b4654d3c4d4292dd]::run_compiler::{closure#1}::{closure#2}, core[dbea6f494faa966e]::result::Result<core[dbea6f494faa966e]::option::Option<rustc_interface[9f664daa3237129]::queries::Linker>, rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>>
  48:     0x7f453d61b09f - rustc_span[1d0b4d44d1f53955]::with_source_map::<core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>, rustc_interface[9f664daa3237129]::interface::create_compiler_and_run<core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>, rustc_driver[b4654d3c4d4292dd]::run_compiler::{closure#1}>::{closure#1}>
  49:     0x7f453d5f3374 - rustc_interface[9f664daa3237129]::interface::create_compiler_and_run::<core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>, rustc_driver[b4654d3c4d4292dd]::run_compiler::{closure#1}>
  50:     0x7f453d5f0c12 - <scoped_tls[ab1554bfb6e7ab15]::ScopedKey<rustc_span[1d0b4d44d1f53955]::SessionGlobals>>::set::<rustc_interface[9f664daa3237129]::interface::run_compiler<core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>, rustc_driver[b4654d3c4d4292dd]::run_compiler::{closure#1}>::{closure#0}, core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>>
  51:     0x7f453d607dff - std[8996aeeb2a45fe64]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[9f664daa3237129]::util::run_in_thread_pool_with_globals<rustc_interface[9f664daa3237129]::interface::run_compiler<core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>, rustc_driver[b4654d3c4d4292dd]::run_compiler::{closure#1}>::{closure#0}, core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>>::{closure#0}, core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>>
  52:     0x7f453d607f39 - <<std[8996aeeb2a45fe64]::thread::Builder>::spawn_unchecked_<rustc_interface[9f664daa3237129]::util::run_in_thread_pool_with_globals<rustc_interface[9f664daa3237129]::interface::run_compiler<core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>, rustc_driver[b4654d3c4d4292dd]::run_compiler::{closure#1}>::{closure#0}, core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>>::{closure#0}, core[dbea6f494faa966e]::result::Result<(), rustc_errors[4633ef6e4608f9c1]::ErrorGuaranteed>>::{closure#1} as core[dbea6f494faa966e]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  53:     0x7f453adcf3c3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h191d5c5ea3edb31d
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/alloc/src/boxed.rs:1872:9
  54:     0x7f453adcf3c3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h42ef7cb2ae640a31
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/alloc/src/boxed.rs:1872:9
  55:     0x7f453adcf3c3 - std::sys::unix::thread::Thread::new::thread_start::he47f7169665dab60
                               at /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3/library/std/src/sys/unix/thread.rs:108:17
  56:     0x7f453acff609 - start_thread
  57:     0x7f453ac18133 - clone
  58:                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.62.1 (e092d0b6b 2022-07-16) running on x86_64-unknown-linux-gnu

note: compiler flags: --crate-type bin -C embed-bitcode=no -C codegen-units=1 -C debuginfo=2

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

query stack during panic:
#0 [explicit_predicates_of] computing explicit predicates of `X`
#1 [predicates_defined_on] computing predicates of `X`
#2 [predicates_of] computing predicates of `X`
#3 [collect_mod_item_types] collecting item types in top-level module
#4 [analysis] running analysis passes on this crate
end of query stack

aldanor avatar Aug 05 '22 19:08 aldanor

Can you reproduce this on nightly?

matthiaskrgr avatar Aug 06 '22 05:08 matthiaskrgr

It looks like it doesn't on nightly, indeed. I'm not sure what the policy is though, an ICE on stable (even though not occurring on nightly) is still an ICE?

aldanor avatar Aug 06 '22 11:08 aldanor

Well, yes, it's still an ICE. But it is now fixed!

gimbling-away avatar Aug 06 '22 11:08 gimbling-away

I'm not sure what the policy is though, an ICE on stable (even though not occurring on nightly) is still an ICE?

There's nothing more to do except for wait until the fix lands on stable, which is happening in the next release which happens in a few days. I'm gonna close this issue because of that, thanks for the report!

compiler-errors avatar Aug 08 '22 01:08 compiler-errors