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: Unexpected node AnonConst(AnonConst.. #122989

Closed
matthiaskrgr opened this issue Mar 24, 2024 · 2 comments · Fixed by #124219
Closed

ICE: Unexpected node AnonConst(AnonConst.. #122989

matthiaskrgr opened this issue Mar 24, 2024 · 2 comments · Fixed by #124219
Labels
A-hir Area: The high-level intermediate representation (HIR) A-typesystem Area: The type system C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ S-bug-has-test Status: This bug is tracked inside the repo by a `known-bug` test. S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@matthiaskrgr
Copy link
Member

auto-reduced (treereduce-rust):

trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
    fn N(&N) -> N<2> {
        M
    }
}

trait N<const N: Traitor<2> = 12> {}

original:

// run-pass
trait Trait<const N: N<2> = 12> {
    fn uwu(&self) -> Traitor<2> {
        N
    }
}

impl N for N {}

impl N<12> for N {
    fn N(&N) -> N<2> {
        *self as N
    }
}

fn foo(N: &dyn Trait) -> Traitor<2> {
    N.uwu()
}

trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
    fn N(&N) -> N<2> {
        M
    }
}

impl N<2> for N { }
impl N for N<2> {
    fn N(&self) -> Traitor {
        *N
    }
}

fn bar<const N: N<2>>(N: &dyn Traitor<2><N>) -> Traitor<12> {
    arg.N()
}

trait N<const N: Traitor<2> = 12> {
    fn N(&N) -> N<2> {
        *N as N<2>
    }
}

Version information

rustc 1.79.0-nightly (548e14b43 2024-03-24)
binary: rustc
commit-hash: 548e14b43963882fb758deb89e8258d9b8c2fc2a
commit-date: 2024-03-24
host: x86_64-unknown-linux-gnu
release: 1.79.0-nightly
LLVM version: 18.1.2

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zincremental-verify-ich=yes -Cincremental=<dir> -Cdebuginfo=2

Program output

error[E0403]: the name `N` is already used for a generic parameter in this item's generic parameters
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:10:40
   |
10 | trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
   |                     - first use of `N` ^ already used

error[E0425]: cannot find value `M` in this scope
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:12:9
   |
12 |         M
   |         ^ not found in this scope

warning: anonymous parameters are deprecated and will be removed in the next edition
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:11:10
   |
11 |     fn N(&N) -> N<2> {
   |          ^^ help: try naming the parameter or explicitly ignoring it: `_: &N`
   |
   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2018!
   = note: for more information, see issue #41686 <https://github.com/rust-lang/rust/issues/41686>
   = note: `#[warn(anonymous_parameters)]` on by default

error[E0601]: `main` function not found in crate `mvce`
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:23:2
   |
23 | }
   |  ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs`

warning: trait objects without an explicit `dyn` are deprecated
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:10:24
   |
10 | trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
   |                        ^^^^
   |
   = 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: if this is an object-safe trait, use `dyn`
   |
10 | trait Traitor<const N: dyn N<2> = 1, const N: N<2> = N> {
   |                        +++

warning: trait objects without an explicit `dyn` are deprecated
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:21:18
   |
21 | trait N<const N: Traitor<2> = 12> {
   |                  ^^^^^^^^^^
   |
   = 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>
help: if this is an object-safe trait, use `dyn`
   |
21 | trait N<const N: dyn Traitor<2> = 12> {
   |                  +++

error[E0391]: cycle detected when computing type of `Traitor::N`
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:10:15
   |
10 | trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
   |               ^^^^^^^^^^^^^^^^^
   |
note: ...which requires computing type of `N::N`...
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:21:9
   |
21 | trait N<const N: Traitor<2> = 12> {
   |         ^^^^^^^^^^^^^^^^^^^^^^^^
   = note: ...which again requires computing type of `Traitor::N`, completing the cycle
note: cycle used when computing explicit predicates of trait `Traitor`
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:10:1
   |
10 | trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   = 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

warning: trait objects without an explicit `dyn` are deprecated
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:10:43
   |
10 | trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
   |                                           ^^^^
   |
   = 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>
help: if this is an object-safe trait, use `dyn`
   |
10 | trait Traitor<const N: N<2> = 1, const N: dyn N<2> = N> {
   |                                           +++

error[E0391]: cycle detected when computing type of `N::N`
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:21:18
   |
21 | trait N<const N: Traitor<2> = 12> {
   |                  ^^^^^^^^^^
   |
note: ...which requires computing type of `Traitor::N`...
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:10:34
   |
10 | trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
   |                                  ^^^^^^^^^^^^^^^^^
   = note: ...which again requires computing type of `N::N`, completing the cycle
note: cycle used when computing type of `Traitor::N`
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:10:15
   |
10 | trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
   |               ^^^^^^^^^^^^^^^^^
   = 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

warning: trait objects without an explicit `dyn` are deprecated
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:11:11
   |
11 |     fn N(&N) -> N<2> {
   |           ^
   |
   = 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>
help: if this is an object-safe trait, use `dyn`
   |
11 |     fn N(&dyn N) -> N<2> {
   |           +++

warning: trait objects without an explicit `dyn` are deprecated
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:11:17
   |
11 |     fn N(&N) -> N<2> {
   |                 ^^^^
   |
   = 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>
help: if this is an object-safe trait, use `dyn`
   |
11 |     fn N(&N) -> dyn N<2> {
   |                 +++

error: internal compiler error: compiler/rustc_hir_analysis/src/hir_wf_check.rs:176:25: Unexpected node AnonConst(AnonConst { hir_id: HirId(DefId(0:3 ~ mvce[6cbd]::Traitor).1), def_id: DefId(0:5 ~ mvce[6cbd]::Traitor::{constant#0}), body: BodyId { hir_id: HirId(DefId(0:3 ~ mvce[6cbd]::Traitor).2) } })

thread 'rustc' panicked at compiler/rustc_hir_analysis/src/hir_wf_check.rs:176:25:
Box<dyn Any>
stack backtrace:
   0:     0x753a24785fd5 - std::backtrace_rs::backtrace::libunwind::trace::h42bff1a7b43dd59b
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
   1:     0x753a24785fd5 - std::backtrace_rs::backtrace::trace_unsynchronized::h487df93320a9df04
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x753a24785fd5 - std::sys_common::backtrace::_print_fmt::h07de1da949170707
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x753a24785fd5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h844cac6fe47b48fc
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x753a247d707b - core::fmt::rt::Argument::fmt::hb8e1c63e19804b9f
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/core/src/fmt/rt.rs:142:9
   5:     0x753a247d707b - core::fmt::write::h48ca3d8ec7493938
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/core/src/fmt/mod.rs:1153:17
   6:     0x753a2477ad6f - std::io::Write::write_fmt::he2f539f86a4d5187
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/io/mod.rs:1843:15
   7:     0x753a24785dae - std::sys_common::backtrace::_print::hf0fb6b45269a2f11
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x753a24785dae - std::sys_common::backtrace::print::h03209c69877615dd
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x753a24788a29 - std::panicking::default_hook::{{closure}}::h101bae6d8c9043af
  10:     0x753a24788793 - std::panicking::default_hook::hf5920306d6e4b5b6
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/panicking.rs:292:9
  11:     0x753a20fcb6ff - std[7fd525226211ab56]::panicking::update_hook::<alloc[2228945b757b350a]::boxed::Box<rustc_driver_impl[e695e332d36d528]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x753a247891c8 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hbe2177d39db84251
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/alloc/src/boxed.rs:2029:9
  13:     0x753a247891c8 - std::panicking::rust_panic_with_hook::h8bee57b94d205fd8
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/panicking.rs:789:13
  14:     0x753a20ffb4b4 - std[7fd525226211ab56]::panicking::begin_panic::<rustc_errors[5b3120a52f02cd0a]::ExplicitBug>::{closure#0}
  15:     0x753a20ff83d6 - std[7fd525226211ab56]::sys_common::backtrace::__rust_end_short_backtrace::<std[7fd525226211ab56]::panicking::begin_panic<rustc_errors[5b3120a52f02cd0a]::ExplicitBug>::{closure#0}, !>
  16:     0x753a20ff80b6 - std[7fd525226211ab56]::panicking::begin_panic::<rustc_errors[5b3120a52f02cd0a]::ExplicitBug>
  17:     0x753a21004941 - <rustc_errors[5b3120a52f02cd0a]::diagnostic::BugAbort as rustc_errors[5b3120a52f02cd0a]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  18:     0x753a2149518c - rustc_middle[bf205a123b303152]::util::bug::opt_span_bug_fmt::<rustc_span[12522247a56ca943]::span_encoding::Span>::{closure#0}
  19:     0x753a214787ea - rustc_middle[bf205a123b303152]::ty::context::tls::with_opt::<rustc_middle[bf205a123b303152]::util::bug::opt_span_bug_fmt<rustc_span[12522247a56ca943]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  20:     0x753a2147866b - rustc_middle[bf205a123b303152]::ty::context::tls::with_context_opt::<rustc_middle[bf205a123b303152]::ty::context::tls::with_opt<rustc_middle[bf205a123b303152]::util::bug::opt_span_bug_fmt<rustc_span[12522247a56ca943]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  21:     0x753a1f86b850 - rustc_middle[bf205a123b303152]::util::bug::bug_fmt
  22:     0x753a211047ca - rustc_hir_analysis[453de524d8357e9f]::hir_wf_check::diagnostic_hir_wf_check
  23:     0x753a2180b984 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::diagnostic_hir_wf_check::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>
  24:     0x753a217efb4b - <rustc_query_impl[8bf19dcd17598194]::query_impl::diagnostic_hir_wf_check::dynamic_query::{closure#2} as core[12243c8320863e2a]::ops::function::FnOnce<(rustc_middle[bf205a123b303152]::ty::context::TyCtxt, (rustc_middle[bf205a123b303152]::ty::predicate::Predicate, rustc_middle[bf205a123b303152]::traits::WellFormedLoc))>>::call_once
  25:     0x753a22bfdedd - <rustc_query_system[66463ee761594c26]::query::plumbing::execute_job_incr<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<(rustc_span[12522247a56ca943]::def_id::DefId, rustc_span[12522247a56ca943]::def_id::DefId), rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt>::{closure#2}::{closure#2} as core[12243c8320863e2a]::ops::function::FnOnce<((rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<(rustc_span[12522247a56ca943]::def_id::DefId, rustc_span[12522247a56ca943]::def_id::DefId), rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>, false, false, false>), (rustc_span[12522247a56ca943]::def_id::DefId, rustc_span[12522247a56ca943]::def_id::DefId))>>::call_once
  26:     0x753a21776385 - <rustc_middle[bf205a123b303152]::dep_graph::DepsType as rustc_query_system[66463ee761594c26]::dep_graph::Deps>::with_deps::<<rustc_query_system[66463ee761594c26]::dep_graph::graph::DepGraphData<rustc_middle[bf205a123b303152]::dep_graph::DepsType>>::with_task<(rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<(rustc_middle[bf205a123b303152]::ty::predicate::Predicate, rustc_middle[bf205a123b303152]::traits::WellFormedLoc), rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>, false, false, false>), (rustc_middle[bf205a123b303152]::ty::predicate::Predicate, rustc_middle[bf205a123b303152]::traits::WellFormedLoc), rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>::{closure#0}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>
  27:     0x753a2176ebd3 - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<(rustc_middle[bf205a123b303152]::ty::predicate::Predicate, rustc_middle[bf205a123b303152]::traits::WellFormedLoc), rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  28:     0x753a21836ebe - rustc_query_impl[8bf19dcd17598194]::query_impl::diagnostic_hir_wf_check::get_query_incr::__rust_end_short_backtrace
  29:     0x753a21aff6ae - <rustc_infer[8affd3d964feabc2]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[2dd905f95f64e3d3]::traits::error_reporting::type_err_ctxt_ext::TypeErrCtxtExt>::report_selection_error
  30:     0x753a21b13491 - <rustc_infer[8affd3d964feabc2]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[2dd905f95f64e3d3]::traits::error_reporting::type_err_ctxt_ext::InferCtxtPrivExt>::report_fulfillment_error
  31:     0x753a21afcc6d - <rustc_infer[8affd3d964feabc2]::infer::error_reporting::TypeErrCtxt as rustc_trait_selection[2dd905f95f64e3d3]::traits::error_reporting::type_err_ctxt_ext::TypeErrCtxtExt>::report_fulfillment_errors
  32:     0x753a22486c85 - <rustc_hir_typeck[a7b48cbd0228bcc8]::fn_ctxt::FnCtxt>::coerce
  33:     0x753a2247f6af - <rustc_hir_typeck[a7b48cbd0228bcc8]::fn_ctxt::FnCtxt>::demand_coerce
  34:     0x753a22611e18 - rustc_hir_typeck[a7b48cbd0228bcc8]::typeck
  35:     0x753a2260f98d - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>
  36:     0x753a22600eae - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_span[12522247a56ca943]::def_id::LocalDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  37:     0x753a228b93cf - rustc_query_impl[8bf19dcd17598194]::query_impl::typeck::get_query_incr::__rust_end_short_backtrace
  38:     0x753a2282149c - rustc_mir_build[e4d978f7790ce682]::thir::pattern::check_match::check_match
  39:     0x753a2282063b - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::check_match::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>
  40:     0x753a228c6b20 - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_span[12522247a56ca943]::def_id::LocalDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  41:     0x753a224c31ac - rustc_query_impl[8bf19dcd17598194]::query_impl::check_match::get_query_incr::__rust_end_short_backtrace
  42:     0x753a2281013f - rustc_mir_build[e4d978f7790ce682]::build::mir_built
  43:     0x753a22810015 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::mir_built::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>
  44:     0x753a22600eae - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_span[12522247a56ca943]::def_id::LocalDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  45:     0x753a228b914a - rustc_query_impl[8bf19dcd17598194]::query_impl::mir_built::get_query_incr::__rust_end_short_backtrace
  46:     0x753a22b78ff9 - rustc_mir_transform[17ed6911bc11e7a2]::mir_const
  47:     0x753a22b78caf - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::mir_const::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>
  48:     0x753a22600eae - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_span[12522247a56ca943]::def_id::LocalDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  49:     0x753a225ff64e - rustc_query_impl[8bf19dcd17598194]::query_impl::mir_const::get_query_incr::__rust_end_short_backtrace
  50:     0x753a225fd2d9 - rustc_middle[bf205a123b303152]::query::plumbing::query_get_at::<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_span[12522247a56ca943]::def_id::LocalDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>>
  51:     0x753a22b6cf41 - rustc_mir_transform[17ed6911bc11e7a2]::mir_const_qualif
  52:     0x753a22b6ceef - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::mir_const_qualif::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 4usize]>>
  53:     0x753a22b6b971 - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefIdCache<rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 4usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  54:     0x753a22b6b32e - rustc_query_impl[8bf19dcd17598194]::query_impl::mir_const_qualif::get_query_incr::__rust_end_short_backtrace
  55:     0x753a22b6c580 - rustc_middle[bf205a123b303152]::query::plumbing::query_get_at::<rustc_query_system[66463ee761594c26]::query::caches::DefIdCache<rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 4usize]>>>
  56:     0x753a1fe4a963 - rustc_mir_transform[17ed6911bc11e7a2]::mir_promoted
  57:     0x753a2272e4da - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::mir_promoted::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 16usize]>>
  58:     0x753a228c3b9c - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_span[12522247a56ca943]::def_id::LocalDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  59:     0x753a228c31f8 - rustc_query_impl[8bf19dcd17598194]::query_impl::mir_promoted::get_query_incr::__rust_end_short_backtrace
  60:     0x753a225fbb90 - rustc_borrowck[42832600642c4f5b]::mir_borrowck
  61:     0x753a225fbad7 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>
  62:     0x753a22600eae - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_span[12522247a56ca943]::def_id::LocalDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  63:     0x753a228b952e - rustc_query_impl[8bf19dcd17598194]::query_impl::mir_borrowck::get_query_incr::__rust_end_short_backtrace
  64:     0x753a22b742eb - rustc_mir_transform[17ed6911bc11e7a2]::mir_drops_elaborated_and_const_checked
  65:     0x753a22b739e1 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>
  66:     0x753a22600eae - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_span[12522247a56ca943]::def_id::LocalDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  67:     0x753a228b99f1 - rustc_query_impl[8bf19dcd17598194]::query_impl::mir_drops_elaborated_and_const_checked::get_query_incr::__rust_end_short_backtrace
  68:     0x753a225fd2d9 - rustc_middle[bf205a123b303152]::query::plumbing::query_get_at::<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_span[12522247a56ca943]::def_id::LocalDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>>
  69:     0x753a22b727ac - rustc_mir_transform[17ed6911bc11e7a2]::mir_for_ctfe
  70:     0x753a22b7271b - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::mir_for_ctfe::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>
  71:     0x753a225d8c22 - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefIdCache<rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  72:     0x753a225d5e25 - rustc_query_impl[8bf19dcd17598194]::query_impl::mir_for_ctfe::get_query_incr::__rust_end_short_backtrace
  73:     0x753a22f9484a - <rustc_const_eval[c85629a20f55f78f]::interpret::eval_context::InterpCx<rustc_const_eval[c85629a20f55f78f]::const_eval::machine::CompileTimeInterpreter>>::load_mir
  74:     0x753a22f96656 - rustc_const_eval[c85629a20f55f78f]::const_eval::eval_queries::eval_to_allocation_raw_provider
  75:     0x753a22f963c0 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::eval_to_allocation_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>
  76:     0x753a22f96381 - <rustc_query_impl[8bf19dcd17598194]::query_impl::eval_to_allocation_raw::dynamic_query::{closure#2} as core[12243c8320863e2a]::ops::function::FnOnce<(rustc_middle[bf205a123b303152]::ty::context::TyCtxt, rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>)>>::call_once
  77:     0x753a22f90f7b - <rustc_query_system[66463ee761594c26]::query::plumbing::execute_job_incr<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt>::{closure#2}::{closure#2} as core[12243c8320863e2a]::ops::function::FnOnce<((rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>, false, false, false>), rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>)>>::call_once
  78:     0x753a22f72e38 - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  79:     0x753a22f725a0 - rustc_query_impl[8bf19dcd17598194]::query_impl::eval_to_allocation_raw::get_query_incr::__rust_end_short_backtrace
  80:     0x753a22f92b54 - rustc_middle[bf205a123b303152]::query::plumbing::query_get_at::<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>>
  81:     0x753a22f70521 - rustc_const_eval[c85629a20f55f78f]::const_eval::valtrees::eval_to_valtree
  82:     0x753a22f704a2 - <rustc_const_eval[c85629a20f55f78f]::provide::{closure#0} as core[12243c8320863e2a]::ops::function::FnOnce<(rustc_middle[bf205a123b303152]::ty::context::TyCtxt, rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>)>>::call_once
  83:     0x753a22f70476 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::eval_to_valtree::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>
  84:     0x753a22f7042f - <rustc_query_impl[8bf19dcd17598194]::query_impl::eval_to_valtree::dynamic_query::{closure#2} as core[12243c8320863e2a]::ops::function::FnOnce<(rustc_middle[bf205a123b303152]::ty::context::TyCtxt, rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>)>>::call_once
  85:     0x753a22f90f7b - <rustc_query_system[66463ee761594c26]::query::plumbing::execute_job_incr<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt>::{closure#2}::{closure#2} as core[12243c8320863e2a]::ops::function::FnOnce<((rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>, false, false, false>), rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>)>>::call_once
  86:     0x753a22f72e38 - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  87:     0x753a2336045c - rustc_query_impl[8bf19dcd17598194]::query_impl::eval_to_valtree::get_query_incr::__rust_end_short_backtrace
  88:     0x753a2278769e - rustc_middle[bf205a123b303152]::query::plumbing::query_get_at::<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<rustc_middle[bf205a123b303152]::ty::ParamEnvAnd<rustc_middle[bf205a123b303152]::mir::interpret::GlobalId>, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 24usize]>>>
  89:     0x753a22788a60 - <rustc_middle[bf205a123b303152]::ty::context::TyCtxt>::const_eval_global_id_for_typeck
  90:     0x753a22cc4c51 - <rustc_middle[bf205a123b303152]::ty::context::TyCtxt>::const_eval_resolve_for_typeck
  91:     0x753a22cc49d6 - <rustc_middle[bf205a123b303152]::ty::consts::Const>::eval
  92:     0x753a22cc4836 - <rustc_trait_selection[2dd905f95f64e3d3]::traits::normalize_param_env_or_error::{closure#0}::ConstNormalizer as rustc_type_ir[8f4fa3cf14dc5e5a]::fold::TypeFolder<rustc_middle[bf205a123b303152]::ty::context::TyCtxt>>::fold_const
  93:     0x753a224d42f1 - <&rustc_middle[bf205a123b303152]::ty::list::List<rustc_middle[bf205a123b303152]::ty::generic_args::GenericArg> as rustc_type_ir[8f4fa3cf14dc5e5a]::fold::TypeFoldable<rustc_middle[bf205a123b303152]::ty::context::TyCtxt>>::try_fold_with::<rustc_trait_selection[2dd905f95f64e3d3]::traits::normalize_param_env_or_error::{closure#0}::ConstNormalizer>
  94:     0x753a224d4d06 - <rustc_middle[bf205a123b303152]::ty::Ty as rustc_type_ir[8f4fa3cf14dc5e5a]::fold::TypeSuperFoldable<rustc_middle[bf205a123b303152]::ty::context::TyCtxt>>::try_super_fold_with::<rustc_trait_selection[2dd905f95f64e3d3]::traits::normalize_param_env_or_error::{closure#0}::ConstNormalizer>
  95:     0x753a1fc0371f - rustc_trait_selection[2dd905f95f64e3d3]::traits::normalize_param_env_or_error
  96:     0x753a225e21b4 - rustc_ty_utils[70cf8b048b20fcef]::ty::param_env
  97:     0x753a225e1de5 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::param_env::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>
  98:     0x753a225d8c22 - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefIdCache<rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
  99:     0x753a225d8287 - rustc_query_impl[8bf19dcd17598194]::query_impl::param_env::get_query_incr::__rust_end_short_backtrace
 100:     0x753a22b078d6 - rustc_middle[bf205a123b303152]::query::plumbing::query_get_at::<rustc_query_system[66463ee761594c26]::query::caches::DefIdCache<rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 8usize]>>>
 101:     0x753a22b2c6f7 - rustc_hir_analysis[453de524d8357e9f]::check::wfcheck::check_trait
 102:     0x753a22b1b7a9 - rustc_hir_analysis[453de524d8357e9f]::check::wfcheck::check_well_formed
 103:     0x753a22b19f75 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>
 104:     0x753a228b5a64 - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::VecCache<rustc_hir[c2328f352bfcf2b3]::hir_id::OwnerId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
 105:     0x753a228b5577 - rustc_query_impl[8bf19dcd17598194]::query_impl::check_well_formed::get_query_incr::__rust_end_short_backtrace
 106:     0x753a22b173ba - rustc_hir_analysis[453de524d8357e9f]::check::wfcheck::check_mod_type_wf
 107:     0x753a22b171e1 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::check_mod_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>
 108:     0x753a22ebf28d - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::DefaultCache<rustc_span[12522247a56ca943]::def_id::LocalModDefId, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
 109:     0x753a22ebfefe - rustc_query_impl[8bf19dcd17598194]::query_impl::check_mod_type_wf::get_query_incr::__rust_end_short_backtrace
 110:     0x753a225f8319 - rustc_hir_analysis[453de524d8357e9f]::check_crate
 111:     0x753a228a802a - rustc_interface[32eaad0573225f19]::passes::analysis
 112:     0x753a228a7b99 - rustc_query_impl[8bf19dcd17598194]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[8bf19dcd17598194]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>
 113:     0x753a2336ac62 - rustc_query_system[66463ee761594c26]::query::plumbing::try_execute_query::<rustc_query_impl[8bf19dcd17598194]::DynamicConfig<rustc_query_system[66463ee761594c26]::query::caches::SingleCache<rustc_middle[bf205a123b303152]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[8bf19dcd17598194]::plumbing::QueryCtxt, true>
 114:     0x753a2336a85c - rustc_query_impl[8bf19dcd17598194]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
 115:     0x753a23071c99 - rustc_interface[32eaad0573225f19]::interface::run_compiler::<core[12243c8320863e2a]::result::Result<(), rustc_span[12522247a56ca943]::ErrorGuaranteed>, rustc_driver_impl[e695e332d36d528]::run_compiler::{closure#0}>::{closure#0}
 116:     0x753a2313efa3 - std[7fd525226211ab56]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[32eaad0573225f19]::util::run_in_thread_with_globals<rustc_interface[32eaad0573225f19]::util::run_in_thread_pool_with_globals<rustc_interface[32eaad0573225f19]::interface::run_compiler<core[12243c8320863e2a]::result::Result<(), rustc_span[12522247a56ca943]::ErrorGuaranteed>, rustc_driver_impl[e695e332d36d528]::run_compiler::{closure#0}>::{closure#0}, core[12243c8320863e2a]::result::Result<(), rustc_span[12522247a56ca943]::ErrorGuaranteed>>::{closure#0}, core[12243c8320863e2a]::result::Result<(), rustc_span[12522247a56ca943]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[12243c8320863e2a]::result::Result<(), rustc_span[12522247a56ca943]::ErrorGuaranteed>>
 117:     0x753a2313edd0 - <<std[7fd525226211ab56]::thread::Builder>::spawn_unchecked_<rustc_interface[32eaad0573225f19]::util::run_in_thread_with_globals<rustc_interface[32eaad0573225f19]::util::run_in_thread_pool_with_globals<rustc_interface[32eaad0573225f19]::interface::run_compiler<core[12243c8320863e2a]::result::Result<(), rustc_span[12522247a56ca943]::ErrorGuaranteed>, rustc_driver_impl[e695e332d36d528]::run_compiler::{closure#0}>::{closure#0}, core[12243c8320863e2a]::result::Result<(), rustc_span[12522247a56ca943]::ErrorGuaranteed>>::{closure#0}, core[12243c8320863e2a]::result::Result<(), rustc_span[12522247a56ca943]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[12243c8320863e2a]::result::Result<(), rustc_span[12522247a56ca943]::ErrorGuaranteed>>::{closure#1} as core[12243c8320863e2a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
 118:     0x753a24792989 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h27cb56cf029c42e6
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/alloc/src/boxed.rs:2015:9
 119:     0x753a24792989 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hde702e0873fc7642
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/alloc/src/boxed.rs:2015:9
 120:     0x753a24792989 - std::sys::pal::unix::thread::Thread::new::thread_start::h4cd71e4fc50a3acb
                               at /rustc/548e14b43963882fb758deb89e8258d9b8c2fc2a/library/std/src/sys/pal/unix/thread.rs:108:17
 121:     0x753a2453255a - <unknown>
 122:     0x753a245afa3c - <unknown>
 123:                0x0 - <unknown>

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.79.0-nightly (548e14b43 2024-03-24) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z incremental-verify-ich=yes -C incremental=[REDACTED] -C debuginfo=2

query stack during panic:
#0 [diagnostic_hir_wf_check] performing HIR wf-checking for predicate `Binder { value: ObjectSafe(DefId(0:3 ~ mvce[6cbd]::Traitor)), bound_vars: [] }` at item `Ty(DefId(0:5 ~ mvce[6cbd]::Traitor::{constant#0}))`
#1 [typeck] type-checking `Traitor::{constant#0}`
#2 [check_match] match-checking `Traitor::{constant#0}`
#3 [mir_built] building MIR for `Traitor::{constant#0}`
#4 [mir_const] preparing `Traitor::{constant#0}` for borrow checking
#5 [mir_const_qualif] const checking `Traitor::{constant#0}`
#6 [mir_promoted] promoting constants in MIR for `Traitor::{constant#0}`
#7 [mir_borrowck] borrow-checking `Traitor::{constant#0}`
#8 [mir_drops_elaborated_and_const_checked] elaborating drops for `Traitor::{constant#0}`
#9 [mir_for_ctfe] caching mir of `Traitor::{constant#0}` for CTFE
#10 [eval_to_allocation_raw] const-evaluating + checking `Traitor::{constant#0}`
#11 [eval_to_valtree] evaluating type-level constant
#12 [param_env] computing normalized predicates of `Traitor`
#13 [check_well_formed] checking that `Traitor` is well-formed
#14 [check_mod_type_wf] checking that types are well-formed in top-level module
#15 [analysis] running analysis passes on this crate
end of query stack
error[E0038]: the trait `Traitor` cannot be made into an object
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:21:18
   |
21 | trait N<const N: Traitor<2> = 12> {
   |                  ^^^^^^^^^^ `Traitor` 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.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:11:8
   |
10 | trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
   |       ------- this trait cannot be made into an object...
11 |     fn N(&N) -> N<2> {
   |        ^ ...because associated function `N` has no `self` parameter
help: consider turning `N` into a method by giving it a `&self` argument
   |
11 |     fn N(&self, &N) -> N<2> {
   |          ++++++
help: alternatively, consider constraining `N` so it does not apply to trait objects
   |
11 |     fn N(&N) -> N<2> where Self: Sized {
   |                      +++++++++++++++++

error[E0038]: the trait `Traitor` cannot be made into an object
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:21:9
   |
21 | trait N<const N: Traitor<2> = 12> {
   |         ^^^^^^^^^^^^^^^^^^^^^^^^ `Traitor` 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.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:11:8
   |
10 | trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
   |       ------- this trait cannot be made into an object...
11 |     fn N(&N) -> N<2> {
   |        ^ ...because associated function `N` has no `self` parameter
help: consider turning `N` into a method by giving it a `&self` argument
   |
11 |     fn N(&self, &N) -> N<2> {
   |          ++++++
help: alternatively, consider constraining `N` so it does not apply to trait objects
   |
11 |     fn N(&N) -> N<2> where Self: Sized {
   |                      +++++++++++++++++

error: `(dyn Traitor<2, {const error}> + 'static)` is forbidden as the type of a const generic parameter
  --> /tmp/icemaker_global_tempdir.O3cw26BoyBrc/rustc_testrunner_tmpdir_reporting.cQ7GAAPG59qe/mvce.rs:21:18
   |
21 | trait N<const N: Traitor<2> = 12> {
   |                  ^^^^^^^^^^
   |
   = note: the only supported types are integers, `bool` and `char`

error: aborting due to 9 previous errors; 6 warnings emitted

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

@matthiaskrgr matthiaskrgr added 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. C-bug Category: This is a bug. labels Mar 24, 2024
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Mar 24, 2024
@matthiaskrgr
Copy link
Member Author

bisects to #122078

@jieyouxu jieyouxu added A-typesystem Area: The type system A-hir Area: The high-level intermediate representation (HIR) S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue and removed needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. labels Apr 4, 2024
@jieyouxu
Copy link
Member

jieyouxu commented Apr 4, 2024

Slightly smaller:

trait Foo<const N: Bar<2>> {
    fn N(_: &N) {
        todo!()
    }
}

trait Bar<const N: Foo<2>> {}

@matthiaskrgr matthiaskrgr added the S-bug-has-test Status: This bug is tracked inside the repo by a `known-bug` test. label Apr 15, 2024
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this issue May 7, 2024
…onst, r=compiler-errors

Do not ICE on `AnonConst`s in `diagnostic_hir_wf_check`

Fixes rust-lang#122989

Below is the snippet from rust-lang#122989 that ICEs:
```rust
trait Traitor<const N: N<2> = 1, const N: N<2> = N> {
    fn N(&N) -> N<2> {
        M
    }
}

trait N<const N: Traitor<2> = 12> {}
```

The `AnonConst` that triggers the ICE is the `2` in the param `const N: N<2> = 1`. The currently existing code in `diagnostic_hir_wf_check` deals only with `AnonConst`s that are default values of some param, but  the `2` is not a default value. It is just an `AnonConst` HIR node inside a `TraitRef` HIR node corresponding to `N<2>`. Therefore the existing code cannot handle it and this PR ensures that it does.
@bors bors closed this as completed in faefc61 May 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-hir Area: The high-level intermediate representation (HIR) A-typesystem Area: The type system C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ S-bug-has-test Status: This bug is tracked inside the repo by a `known-bug` test. S-has-mcve Status: A Minimal Complete and Verifiable Example has been found for this issue T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants