Skip to content

ice: Failed to get parent for DefId #119827

Closed
@matthiaskrgr

Description

@matthiaskrgr

another #117449 regression cc @oli-obk

auto-reduced (treereduce-rust):

trait Foo {
    type Context<'register_something>
    where
        Self: 'c;
}

impl Foo for Box<Foo> {}

original:

trait Foo {
    type Context<'register_something> where Self: 'c;
    fn foo(self) -> Self::Bar;
}

impl Foo for Box<Foo> {
    type Bar = <Self as Foo>::Bar;
    fn foo(self) -> <Self as Foo>::Bar {
        (!0).foo()
    }
}

Version information

rustc 1.77.0-nightly (94807670a 2024-01-09)
binary: rustc
commit-hash: 94807670a6a3834cc9b71b0b803d49d307c9ba5d
commit-date: 2024-01-09
host: x86_64-unknown-linux-gnu
release: 1.77.0-nightly
LLVM version: 17.0.6

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

Program output

error[E0261]: use of undeclared lifetime name `'c`
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:4:15
  |
4 |         Self: 'c;
  |               ^^ undeclared lifetime
  |
  = note: for more information on higher-ranked polymorphism, visit https://doc.rust-lang.org/nomicon/hrtb.html
help: consider making the bound lifetime-generic with a new `'c` lifetime
  |
4 |         for<'c> Self: 'c;
  |         +++++++
help: consider introducing lifetime `'c` here
  |
2 |     type Context<'c, 'register_something>
  |                  +++
help: consider introducing lifetime `'c` here
  |
1 | trait Foo<'c> {
  |          ++++

error[E0601]: `main` function not found in crate `mvce`
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:7:25
  |
7 | impl Foo for Box<Foo> {}
  |                         ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs`

warning: trait objects without an explicit `dyn` are deprecated
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:7:18
  |
7 | impl Foo for Box<Foo> {}
  |                  ^^^
  |
  = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
  = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
  = note: `#[warn(bare_trait_objects)]` on by default
help: use `dyn`
  |
7 | impl Foo for Box<dyn Foo> {}
  |                  +++

error[E0391]: cycle detected when computing type of `<impl at /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:7:1: 7:22>`
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:7:1
  |
7 | impl Foo for Box<Foo> {}
  | ^^^^^^^^^^^^^^^^^^^^^
  |
note: ...which requires finding trait impls of `Foo`...
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:1:1
  |
1 | trait Foo {
  | ^^^^^^^^^
  = note: ...which again requires computing type of `<impl at /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:7:1: 7:22>`, completing the cycle
note: cycle used when collecting item types in top-level module
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:1:1
  |
1 | / trait Foo {
2 | |     type Context<'register_something>
3 | |     where
4 | |         Self: 'c;
5 | | }
6 | |
7 | | impl Foo for Box<Foo> {}
  | |________________________^
  = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information

error[E0038]: the trait `Foo` cannot be made into an object
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:7:18
  |
7 | impl Foo for Box<Foo> {}
  |                  ^^^ `Foo` cannot be made into an object
  |
note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:2:10
  |
1 | trait Foo {
  |       --- this trait cannot be made into an object...
2 |     type Context<'register_something>
  |          ^^^^^^^ ...because it contains the generic associated type `Context`
  = help: consider moving `Context` to another trait

error[E0277]: the trait bound `Box<(dyn Foo + 'static)>: Foo` is not satisfied
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:7:14
  |
7 | impl Foo for Box<Foo> {}
  |              ^^^^^^^^ the trait `Foo` is not implemented for `Box<(dyn Foo + 'static)>`
  |
help: this trait has no implementations, consider adding one
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:1:1
  |
1 | trait Foo {
  | ^^^^^^^^^

error[E0038]: the trait `Foo` cannot be made into an object
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:7:14
  |
7 | impl Foo for Box<Foo> {}
  |              ^^^^^^^^ `Foo` cannot be made into an object
  |
note: for a trait to be "object safe" it needs to allow building a vtable to allow the call to be resolvable dynamically; for more information visit <https://doc.rust-lang.org/reference/items/traits.html#object-safety>
 --> /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:2:10
  |
1 | trait Foo {
  |       --- this trait cannot be made into an object...
2 |     type Context<'register_something>
  |          ^^^^^^^ ...because it contains the generic associated type `Context`
  = help: consider moving `Context` to another trait

thread 'rustc' panicked at compiler/rustc_middle/src/traits/specialization_graph.rs:46:52:
Failed to get parent for DefId(0:6 ~ mvce[441b]::{impl#0})
stack backtrace:
   0:     0x7fb7346087e6 - std::backtrace_rs::backtrace::libunwind::trace::h0c9ea26daee6c947
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/../../backtrace/src/backtrace/libunwind.rs:104:5
   1:     0x7fb7346087e6 - std::backtrace_rs::backtrace::trace_unsynchronized::hb1bc1aeb5f61b551
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fb7346087e6 - std::sys_common::backtrace::_print_fmt::h094aad19be8ebe6d
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7fb7346087e6 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hc6874234e7762746
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7fb73465aec0 - core::fmt::rt::Argument::fmt::hdf2968bdc2925a9e
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/core/src/fmt/rt.rs:142:9
   5:     0x7fb73465aec0 - core::fmt::write::h8664bf9edaaf2694
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/core/src/fmt/mod.rs:1120:17
   6:     0x7fb7345fc14f - std::io::Write::write_fmt::h0eaa39fdf46de86b
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/io/mod.rs:1810:15
   7:     0x7fb7346085c4 - std::sys_common::backtrace::_print::hbef740e19ca9f8df
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7fb7346085c4 - std::sys_common::backtrace::print::h632ce963033ff6b9
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7fb73460b357 - std::panicking::default_hook::{{closure}}::h60c33aff8a33c9d6
  10:     0x7fb73460b0b9 - std::panicking::default_hook::h5afa325d341c9143
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/panicking.rs:292:9
  11:     0x7fb731358d7c - std[999b1d78adc0d845]::panicking::update_hook::<alloc[69c273dd4ce48d0d]::boxed::Box<rustc_driver_impl[dbdcdc7d37d3e64f]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x7fb73460baa6 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h16a7189283919a61
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/alloc/src/boxed.rs:2030:9
  13:     0x7fb73460baa6 - std::panicking::rust_panic_with_hook::hca001e421e65617b
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/panicking.rs:785:13
  14:     0x7fb73460b7f2 - std::panicking::begin_panic_handler::{{closure}}::h6406412da9b6ba9b
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/panicking.rs:659:13
  15:     0x7fb734608ce6 - std::sys_common::backtrace::__rust_end_short_backtrace::he19e0aee91c65d50
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/sys_common/backtrace.rs:171:18
  16:     0x7fb73460b550 - rust_begin_unwind
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/panicking.rs:647:5
  17:     0x7fb7346575c5 - core::panicking::panic_fmt::h94e85fe2ee4d3b09
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/core/src/panicking.rs:72:14
  18:     0x7fb732c680d0 - <rustc_middle[c0a27e9ee4b37138]::traits::specialization_graph::Ancestors>::leaf_def
  19:     0x7fb73313e090 - rustc_hir_analysis[f99769aaf9fbe3be]::check::check::check_item_type
  20:     0x7fb732d00119 - rustc_hir_analysis[f99769aaf9fbe3be]::check::wfcheck::check_well_formed
  21:     0x7fb732cfefb3 - rustc_query_impl[57fa99c9f9bc5eb5]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[57fa99c9f9bc5eb5]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[c0a27e9ee4b37138]::query::erase::Erased<[u8; 1usize]>>
  22:     0x7fb732cfe6b1 - rustc_query_system[a4bae605c4fc5fe8]::query::plumbing::try_execute_query::<rustc_query_impl[57fa99c9f9bc5eb5]::DynamicConfig<rustc_query_system[a4bae605c4fc5fe8]::query::caches::VecCache<rustc_hir[ec81b7385329ac7f]::hir_id::OwnerId, rustc_middle[c0a27e9ee4b37138]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[57fa99c9f9bc5eb5]::plumbing::QueryCtxt, false>
  23:     0x7fb732cfe41b - rustc_query_impl[57fa99c9f9bc5eb5]::query_impl::check_well_formed::get_query_non_incr::__rust_end_short_backtrace
  24:     0x7fb732cfbdb7 - rustc_hir_analysis[f99769aaf9fbe3be]::check::wfcheck::check_mod_type_wf
  25:     0x7fb732cfbcfb - rustc_query_impl[57fa99c9f9bc5eb5]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[57fa99c9f9bc5eb5]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[c0a27e9ee4b37138]::query::erase::Erased<[u8; 1usize]>>
  26:     0x7fb732cfaebb - rustc_query_system[a4bae605c4fc5fe8]::query::plumbing::try_execute_query::<rustc_query_impl[57fa99c9f9bc5eb5]::DynamicConfig<rustc_query_system[a4bae605c4fc5fe8]::query::caches::DefaultCache<rustc_span[1a57749618183ecc]::def_id::LocalModDefId, rustc_middle[c0a27e9ee4b37138]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[57fa99c9f9bc5eb5]::plumbing::QueryCtxt, false>
  27:     0x7fb732cfac53 - rustc_query_impl[57fa99c9f9bc5eb5]::query_impl::check_mod_type_wf::get_query_non_incr::__rust_end_short_backtrace
  28:     0x7fb732ae331a - <rustc_middle[c0a27e9ee4b37138]::hir::map::Map>::try_par_for_each_module::<rustc_hir_analysis[f99769aaf9fbe3be]::check_crate::{closure#4}::{closure#0}>::{closure#0}
  29:     0x7fb732ae3b50 - rustc_hir_analysis[f99769aaf9fbe3be]::check_crate
  30:     0x7fb733015619 - rustc_interface[8630123b344ba534]::passes::analysis
  31:     0x7fb73301525f - rustc_query_impl[57fa99c9f9bc5eb5]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[57fa99c9f9bc5eb5]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[c0a27e9ee4b37138]::query::erase::Erased<[u8; 1usize]>>
  32:     0x7fb7335c9524 - rustc_query_system[a4bae605c4fc5fe8]::query::plumbing::try_execute_query::<rustc_query_impl[57fa99c9f9bc5eb5]::DynamicConfig<rustc_query_system[a4bae605c4fc5fe8]::query::caches::SingleCache<rustc_middle[c0a27e9ee4b37138]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[57fa99c9f9bc5eb5]::plumbing::QueryCtxt, false>
  33:     0x7fb7335c9315 - rustc_query_impl[57fa99c9f9bc5eb5]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  34:     0x7fb733350008 - rustc_interface[8630123b344ba534]::interface::run_compiler::<core[1ecfc9c7dbf148b3]::result::Result<(), rustc_span[1a57749618183ecc]::ErrorGuaranteed>, rustc_driver_impl[dbdcdc7d37d3e64f]::run_compiler::{closure#0}>::{closure#0}
  35:     0x7fb7335ee746 - std[999b1d78adc0d845]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[8630123b344ba534]::util::run_in_thread_with_globals<rustc_interface[8630123b344ba534]::util::run_in_thread_pool_with_globals<rustc_interface[8630123b344ba534]::interface::run_compiler<core[1ecfc9c7dbf148b3]::result::Result<(), rustc_span[1a57749618183ecc]::ErrorGuaranteed>, rustc_driver_impl[dbdcdc7d37d3e64f]::run_compiler::{closure#0}>::{closure#0}, core[1ecfc9c7dbf148b3]::result::Result<(), rustc_span[1a57749618183ecc]::ErrorGuaranteed>>::{closure#0}, core[1ecfc9c7dbf148b3]::result::Result<(), rustc_span[1a57749618183ecc]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[1ecfc9c7dbf148b3]::result::Result<(), rustc_span[1a57749618183ecc]::ErrorGuaranteed>>
  36:     0x7fb7335ee573 - <<std[999b1d78adc0d845]::thread::Builder>::spawn_unchecked_<rustc_interface[8630123b344ba534]::util::run_in_thread_with_globals<rustc_interface[8630123b344ba534]::util::run_in_thread_pool_with_globals<rustc_interface[8630123b344ba534]::interface::run_compiler<core[1ecfc9c7dbf148b3]::result::Result<(), rustc_span[1a57749618183ecc]::ErrorGuaranteed>, rustc_driver_impl[dbdcdc7d37d3e64f]::run_compiler::{closure#0}>::{closure#0}, core[1ecfc9c7dbf148b3]::result::Result<(), rustc_span[1a57749618183ecc]::ErrorGuaranteed>>::{closure#0}, core[1ecfc9c7dbf148b3]::result::Result<(), rustc_span[1a57749618183ecc]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[1ecfc9c7dbf148b3]::result::Result<(), rustc_span[1a57749618183ecc]::ErrorGuaranteed>>::{closure#1} as core[1ecfc9c7dbf148b3]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  37:     0x7fb7346159d5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h75905edabd5878b2
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/alloc/src/boxed.rs:2016:9
  38:     0x7fb7346159d5 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hbed8035343ffa301
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/alloc/src/boxed.rs:2016:9
  39:     0x7fb7346159d5 - std::sys::unix::thread::Thread::new::thread_start::hde523d9576990e45
                               at /rustc/94807670a6a3834cc9b71b0b803d49d307c9ba5d/library/std/src/sys/unix/thread.rs:108:17
  40:     0x7fb72e4aa9eb - <unknown>
  41:     0x7fb72e52e7cc - <unknown>
  42:                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: rustc 1.77.0-nightly (94807670a 2024-01-09) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [check_well_formed] checking that `<impl at /tmp/icemaker_global_tempdir.nccf5q5EpktV/rustc_testrunner_tmpdir_reporting.J4FFYA0YFLJ5/mvce.rs:7:1: 7:22>` is well-formed
#1 [check_mod_type_wf] checking that types are well-formed in top-level module
#2 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 6 previous errors; 1 warning emitted

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

Metadata

Metadata

Assignees

Labels

C-bugCategory: This is a bug.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.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions