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: region variables should not be hashed #112397

Open
matthiaskrgr opened this issue Jun 7, 2023 · 6 comments
Open

ICE: region variables should not be hashed #112397

matthiaskrgr opened this issue Jun 7, 2023 · 6 comments
Labels
C-bug Category: This is a bug. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ requires-nightly This issue requires a nightly compiler in some way. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@matthiaskrgr
Copy link
Member

Code

needs debug assertions
build with rustc -Zdump-mir=all -Zdump-mir-dir=dir

code from rustc cant-hide-behind-doubly-indirect-embedded.rs
original

// This is part of a set of tests exploring the different ways a
// structural-match ADT might try to hold a
// non-structural-match in hidden manner that lets matches
// through that we had intended to reject.
//
// See discussion on rust-lang/rust#62307 and rust-lang/rust#62339
#![warn(indirect_structural_match)]
// run-pass

struct NoDerive(#[allow(unused_tuple_struct_fields)] i32);

// This impl makes NoDerive irreflexive.
impl PartialEq for NoDerive { fn eq(&self, _: &Self) -> bool { false } }

impl Eq for NoDerive { }

#[derive(PartialEq, Eq)]
struct WrapInline<'a>(&'a &'a NoDerive);

const WRAP_DOUBLY_INDIRECT_INLINE: & &WrapInline = & &WrapInline(& & NoDerive(0));

fn main() {
    match WRAP_DOUBLY_INDIRECT_INLINE {
        WRAP_DOUBLY_INDIRECT_INLINE => { panic!("WRAP_DOUBLY_INDIRECT_INLINE matched itself"); }
        //~^ WARN must be annotated with `#[derive(PartialEq, Eq)]`
        //~| WARN this was previously accepted
        _ => { println!("WRAP_DOUBLY_INDIRECT_INLINE correctly did not match itself"); }
    }
}

reduced a bit

struct NoDerive(i32);

impl PartialEq for NoDerive {
    fn eq(&self, _: &Self) -> bool {
        false
    }
}

impl Eq for NoDerive {}

#[derive(PartialEq, Eq)]
struct WrapInline<'a>(&'a &'a NoDerive);

const WRAP_DOUBLY_INDIRECT_INLINE: &&WrapInline = &&WrapInline(&&NoDerive(0));

fn main() {
    match WRAP_DOUBLY_INDIRECT_INLINE {
        WRAP_DOUBLY_INDIRECT_INLINE | _ => {}
    }
}

Meta

rustc --version --verbose:

b2b34bd83192c3d16c88655158f7d8d612513e88

Error output

warning: to use a constant of type `NoDerive` in a pattern, `NoDerive` must be annotated with `#[derive(PartialEq, Eq)]`
  --> treereduce.out:18:9
   |
18 |         WRAP_DOUBLY_INDIRECT_INLINE | _ => {}
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #62411 <https://github.com/rust-lang/rust/issues/62411>
   = note: the traits must be derived, manual `impl`s are not sufficient
   = note: see https://doc.rust-lang.org/stable/std/marker/trait.StructuralEq.html for details
   = note: `#[warn(indirect_structural_match)]` on by default

warning: 1 warning emitted
Backtrace

thread 'rustc' panicked at 'region variables should not be hashed: '?11', /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_type_ir/src/sty.rs:1258:17
stack backtrace:
   0:     0x7fd40d2f1156 - trace
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7fd40d2f1156 - trace_unsynchronized<std::sys_common::backtrace::_print_fmt::{closure_env#1}>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7fd40d2f1156 - _print_fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x7fd40d2f1156 - fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7fd40d33d9f8 - fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/rt.rs:138:9
   5:     0x7fd40d33d9f8 - write
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1094:21
   6:     0x7fd40d2aafbf - write_fmt<std::sys::unix::stdio::Stderr>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/io/mod.rs:1713:15
   7:     0x7fd40d2f0f55 - _print
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7fd40d2f0f55 - print
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7fd40d2ca06c - {closure#1}
  10:     0x7fd40d2c9d42 - default_hook
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:288:9
  11:     0x7fd40ec7954b - call<(&core::panic::panic_info::PanicInfo), (dyn core::ops::function::Fn<(&core::panic::panic_info::PanicInfo), Output=()> + core::marker::Send + core::marker::Sync), alloc::alloc::Global>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/boxed.rs:1999:9
  12:     0x7fd40ec7954b - {closure#0}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_driver_impl/src/lib.rs:1269:13
  13:     0x7fd40d2ca855 - call<(&core::panic::panic_info::PanicInfo), (dyn core::ops::function::Fn<(&core::panic::panic_info::PanicInfo), Output=()> + core::marker::Send + core::marker::Sync), alloc::alloc::Global>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/boxed.rs:1999:9
  14:     0x7fd40d2ca855 - rust_panic_with_hook
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:709:13
  15:     0x7fd40d2f1467 - {closure#0}
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:597:13
  16:     0x7fd40d2f1236 - __rust_end_short_backtrace<std::panicking::begin_panic_handler::{closure_env#0}, !>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:151:18
  17:     0x7fd40d2ca3c2 - begin_panic_handler
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:593:5
  18:     0x7fd40d27e133 - panic_fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/panicking.rs:67:14
  19:     0x7fd40fc8fbb3 - hash_stable<rustc_query_system::ich::hcx::StableHashingContext, rustc_middle::ty::context::TyCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_type_ir/src/sty.rs:1258:17
  20:     0x7fd40fc8fbb3 - hash_stable<rustc_type_ir::sty::RegionKind<rustc_middle::ty::context::TyCtxt>, rustc_query_system::ich::hcx::StableHashingContext>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/intern.rs:107:9
  21:     0x7fd40fc8fbb3 - hash_stable
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/sty.rs:1458:61
  22:     0x7fd40fc8fbb3 - hash_stable
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/subst.rs:50:75
  23:     0x7fd40fc8fbb3 - hash_stable
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/impls_ty.rs:72:9
  24:     0x7fd410815c42 - hash_stable<rustc_middle::ty::subst::GenericArg, rustc_query_system::ich::hcx::StableHashingContext>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stable_hasher.rs:376:13
  25:     0x7fd410815c42 - {closure#0}<rustc_middle::ty::subst::GenericArg>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/impls_ty.rs:32:13
  26:     0x7fd410815c42 - try_with<core::cell::RefCell<std::collections::hash::map::HashMap<(usize, usize, rustc_data_structures::stable_hasher::HashingControls), rustc_data_structures::fingerprint::Fingerprint, core::hash::BuildHasherDefault<rustc_hash::FxHasher>>>, rustc_middle::ty::impls_ty::{impl#0}::hash_stable::{closure_env#0}<rustc_middle::ty::subst::GenericArg>, rustc_data_structures::fingerprint::Fingerprint>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16
  27:     0x7fd410815c42 - with<core::cell::RefCell<std::collections::hash::map::HashMap<(usize, usize, rustc_data_structures::stable_hasher::HashingControls), rustc_data_structures::fingerprint::Fingerprint, core::hash::BuildHasherDefault<rustc_hash::FxHasher>>>, rustc_middle::ty::impls_ty::{impl#0}::hash_stable::{closure_env#0}<rustc_middle::ty::subst::GenericArg>, rustc_data_structures::fingerprint::Fingerprint>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9
  28:     0x7fd410815c42 - hash_stable<rustc_middle::ty::subst::GenericArg>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/impls_ty.rs:25:26
  29:     0x7fd410910aa7 - hash_stable<rustc_query_system::ich::hcx::StableHashingContext, rustc_middle::ty::context::TyCtxt>
  30:     0x7fd410910aa7 - hash_stable<rustc_type_ir::sty::TyKind<rustc_middle::ty::context::TyCtxt>, rustc_query_system::ich::hcx::StableHashingContext>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_type_ir/src/ty_info.rs:108:17
  31:     0x7fd4106cdc98 - hash_stable<rustc_type_ir::ty_info::WithCachedTypeInfo<rustc_type_ir::sty::TyKind<rustc_middle::ty::context::TyCtxt>>, rustc_query_system::ich::hcx::StableHashingContext>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/intern.rs:107:9
  32:     0x7fd4106cdc98 - hash_stable
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/mod.rs:446:61
  33:     0x7fd4106cdc98 - hash_stable
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/consts.rs:24:48
  34:     0x7fd4106cdc98 - hash_stable<rustc_middle::ty::consts::ConstData, rustc_query_system::ich::hcx::StableHashingContext>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/intern.rs:107:16
  35:     0x7fd4106cdc98 - hash_stable
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/consts.rs:19:61
  36:     0x7fd4106cdc98 - {closure#0}<rustc_middle::ty::context::TyCtxt, rustc_middle::ty::consts::Const>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/dep_graph/dep_node.rs:148:13
  37:     0x7fd4106cdc98 - with_stable_hashing_context<rustc_data_structures::fingerprint::Fingerprint, rustc_query_system::dep_graph::dep_node::{impl#2}::to_fingerprint::{closure_env#0}<rustc_middle::ty::context::TyCtxt, rustc_middle::ty::consts::Const>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context.rs:1011:9
  38:     0x7fd4106cdc98 - with_stable_hashing_context<rustc_data_structures::fingerprint::Fingerprint, rustc_query_system::dep_graph::dep_node::{impl#2}::to_fingerprint::{closure_env#0}<rustc_middle::ty::context::TyCtxt, rustc_middle::ty::consts::Const>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/dep_graph/mod.rs:78:9
  39:     0x7fd4106cdc98 - to_fingerprint<rustc_middle::ty::context::TyCtxt, rustc_middle::ty::consts::Const>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/dep_graph/dep_node.rs:146:9
  40:     0x7fd4106cdc98 - execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::consts::Const, rustc_middle::query::erase::Erased<[u8; 24]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:476:17
  41:     0x7fd4106cdc98 - execute_job<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::consts::Const, rustc_middle::query::erase::Erased<[u8; 24]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:413:9
  42:     0x7fd4106cdc98 - try_execute_query<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::consts::Const, rustc_middle::query::erase::Erased<[u8; 24]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:358:13
  43:     0x7fd4107afa88 - {closure#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::consts::Const, rustc_middle::query::erase::Erased<[u8; 24]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:32
  44:     0x7fd4107afa88 - maybe_grow<rustc_middle::query::erase::Erased<[u8; 24]>, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::consts::Const, rustc_middle::query::erase::Erased<[u8; 24]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9
  45:     0x7fd4107afa88 - ensure_sufficient_stack<rustc_middle::query::erase::Erased<[u8; 24]>, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::consts::Const, rustc_middle::query::erase::Erased<[u8; 24]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5
  46:     0x7fd4107afa88 - get_query_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::consts::Const, rustc_middle::query::erase::Erased<[u8; 24]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:5
  47:     0x7fd4107afa88 - __rust_end_short_backtrace
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:554:26
  48:     0x7fd40fd83dd6 - query_get_at<rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::consts::Const, rustc_middle::query::erase::Erased<[u8; 24]>>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:155:17
  49:     0x7fd40fd83dd6 - destructure_const
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/mod.rs:2179:1
  50:     0x7fd40fd83dd6 - destructure_const
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:376:35
  51:     0x7fd40fd83dd6 - pretty_print_const_valtree<rustc_middle::ty::print::pretty::FmtPrinter>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/print/pretty.rs:1600:43
  52:     0x7fd40fd83d2c - pretty_print_const_valtree<rustc_middle::ty::print::pretty::FmtPrinter>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/print/pretty.rs:1586:21
  53:     0x7fd40fd83d2c - pretty_print_const_valtree<rustc_middle::ty::print::pretty::FmtPrinter>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/print/pretty.rs:1586:21
  54:     0x7fd40fd8183a - pretty_print_const<rustc_middle::ty::print::pretty::FmtPrinter>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/print/pretty.rs:1373:24
  55:     0x7fd40fc4f059 - {closure#0}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/mir/mod.rs:2802:18
  56:     0x7fd40fc4f059 - {closure#0}<rustc_middle::mir::pretty_print_const::{closure_env#0}, core::result::Result<(), core::fmt::Error>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:144:28
  57:     0x7fd40fc4f059 - {closure#0}<rustc_middle::ty::context::tls::with::{closure_env#0}<rustc_middle::mir::pretty_print_const::{closure_env#0}, core::result::Result<(), core::fmt::Error>>, core::result::Result<(), core::fmt::Error>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:36
  58:     0x7fd40fc4f059 - with_context_opt<rustc_middle::ty::context::tls::with_context::{closure_env#0}<rustc_middle::ty::context::tls::with::{closure_env#0}<rustc_middle::mir::pretty_print_const::{closure_env#0}, core::result::Result<(), core::fmt::Error>>, core::result::Result<(), core::fmt::Error>>, core::result::Result<(), core::fmt::Error>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:100:18
  59:     0x7fd40fc4f059 - with_context<rustc_middle::ty::context::tls::with::{closure_env#0}<rustc_middle::mir::pretty_print_const::{closure_env#0}, core::result::Result<(), core::fmt::Error>>, core::result::Result<(), core::fmt::Error>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:5
  60:     0x7fd40fc4f059 - with<rustc_middle::mir::pretty_print_const::{closure_env#0}, core::result::Result<(), core::fmt::Error>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:144:5
  61:     0x7fd40fc4f059 - pretty_print_const
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/mir/mod.rs:2798:5
  62:     0x7fd40d33d9f8 - fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/rt.rs:138:9
  63:     0x7fd40d33d9f8 - write
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1094:21
  64:     0x7fd40d33e872 - core::fmt::Formatter::write_fmt::h59240f582ad6c2c4
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1560:9
  65:     0x7fd40fc7ae24 - fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/mir/mod.rs:2764:9
  66:     0x7fd40fc7ae24 - fmt<rustc_middle::mir::Constant, alloc::alloc::Global>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/boxed.rs:1882:9
  67:     0x7fd40fc7ae24 - fmt<alloc::boxed::Box<rustc_middle::mir::Constant, alloc::alloc::Global>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:2268:62
  68:     0x7fd40d33d9f8 - fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/rt.rs:138:9
  69:     0x7fd40d33d9f8 - write
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1094:21
  70:     0x7fd40d33e872 - core::fmt::Formatter::write_fmt::h59240f582ad6c2c4
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1560:9
  71:     0x7fd40fcb1d75 - fmt
  72:     0x7fd40d33d9f8 - fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/rt.rs:138:9
  73:     0x7fd40d33d9f8 - write
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1094:21
  74:     0x7fd40d33e872 - core::fmt::Formatter::write_fmt::h59240f582ad6c2c4
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1560:9
  75:     0x7fd40fcadd6d - fmt_head<core::fmt::Formatter>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/mir/terminator.rs:324:21
  76:     0x7fd40fcadd6d - fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/mir/terminator.rs:268:9
  77:     0x7fd40d33d978 - fmt
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/rt.rs:138:9
  78:     0x7fd40d33d978 - run
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1142:11
  79:     0x7fd40d33d978 - write
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:1110:26
  80:     0x7fd40d32fac7 - write_fmt<alloc::string::String>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/fmt/mod.rs:192:9
  81:     0x7fd40d32fac7 - format_inner
                               at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/fmt.rs:610:16
  82:     0x7fd40e4bad1c - {closure#0}
                               at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/fmt.rs:614:34
  83:     0x7fd40e4bad1c - map_or_else<&str, alloc::string::String, alloc::fmt::format::{closure_env#0}, fn(&str) -> alloc::string::String>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/option.rs:1180:21
  84:     0x7fd40e4bad1c - format
                               at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/fmt.rs:614:5
  85:     0x7fd40e4bad1c - write_basic_block<rustc_borrowck::nll::replace_regions_in_mir::{closure_env#0}>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/macros.rs:120:19
  86:     0x7fd40e4bad1c - write_mir_fn<rustc_borrowck::nll::replace_regions_in_mir::{closure_env#0}>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/mir/pretty.rs:321:9
  87:     0x7fd40e4bad1c - dump_matched_mir_node<rustc_borrowck::nll::replace_regions_in_mir::{closure_env#0}>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/mir/pretty.rs:139:9
  88:     0x7fd40e4bad1c - dump_mir<rustc_borrowck::nll::replace_regions_in_mir::{closure_env#0}>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/mir/pretty.rs:88:5
  89:     0x7fd40e4bad1c - replace_regions_in_mir
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_borrowck/src/nll.rs:75:5
  90:     0x7fd40e31bff7 - do_mir_borrowck
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_borrowck/src/lib.rs:217:9
  91:     0x7fd40e304599 - mir_borrowck
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_borrowck/src/lib.rs:147:27
  92:     0x7fd4108e480c - {closure#0}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:577:33
  93:     0x7fd4108e480c - __rust_begin_short_backtrace<rustc_query_impl::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:506:18
  94:     0x7fd4108a72fc - {closure#2}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:574:25
  95:     0x7fd4108a72fc - call_once<rustc_query_impl::query_impl::mir_borrowck::dynamic_query::{closure_env#2}, (rustc_middle::ty::context::TyCtxt, rustc_span::def_id::LocalDefId)>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/ops/function.rs:250:5
  96:     0x7fd4107086c6 - compute<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/lib.rs:116:9
  97:     0x7fd4107086c6 - {closure#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:72
  98:     0x7fd4107086c6 - {closure#0}<rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:82:9
  99:     0x7fd4107086c6 - try_with<core::cell::Cell<*const ()>, rustc_middle::ty::context::tls::enter_context::{closure_env#0}<rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16
 100:     0x7fd4107086c6 - with<core::cell::Cell<*const ()>, rustc_middle::ty::context::tls::enter_context::{closure_env#0}<rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9
 101:     0x7fd4107086c6 - enter_context<rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:79:9
 102:     0x7fd4107086c6 - {closure#0}<rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:149:13
 103:     0x7fd4107086c6 - {closure#0}<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:133:9
 104:     0x7fd4107086c6 - {closure#0}<rustc_middle::ty::context::tls::with_related_context::{closure_env#0}<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:36
 105:     0x7fd4107086c6 - with_context_opt<rustc_middle::ty::context::tls::with_context::{closure_env#0}<rustc_middle::ty::context::tls::with_related_context::{closure_env#0}<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:100:18
 106:     0x7fd4107086c6 - with_context<rustc_middle::ty::context::tls::with_related_context::{closure_env#0}<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:5
 107:     0x7fd4107086c6 - with_related_context<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 8]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:124:5
 108:     0x7fd4107086c6 - start_query<rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:134:9
 109:     0x7fd4107086c6 - execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:18
 110:     0x7fd4107086c6 - execute_job<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:413:9
 111:     0x7fd4107086c6 - try_execute_query<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:358:13
 112:     0x7fd4107aeb46 - {closure#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:32
 113:     0x7fd4107aeb46 - maybe_grow<rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9
 114:     0x7fd4107aeb46 - ensure_sufficient_stack<rustc_middle::query::erase::Erased<[u8; 8]>, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5
 115:     0x7fd4107aeb46 - get_query_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:5
 116:     0x7fd4107aeb46 - __rust_end_short_backtrace
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:554:26
 117:     0x7fd40f7882e9 - query_ensure<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:171:9
 118:     0x7fd40f7882e9 - mir_borrowck<rustc_span::def_id::LocalDefId>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/mod.rs:2179:1
 119:     0x7fd40f7882e9 - {closure#0}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/passes.rs:771:57
 120:     0x7fd40f7882e9 - {closure#0}<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/hir/map/mod.rs:496:82
 121:     0x7fd40f7882e9 - {closure#0}<&[rustc_span::def_id::LocalDefId], rustc_middle::hir::map::{impl#2}::par_body_owners::{closure_env#0}<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/sync.rs:218:66
 122:     0x7fd40f7882e9 - call_once<(), rustc_data_structures::sync::par_for_each_in::{closure#0}::{closure_env#0}<&[rustc_span::def_id::LocalDefId], rustc_middle::hir::map::{impl#2}::par_body_owners::{closure_env#0}<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/panic/unwind_safe.rs:271:9
 123:     0x7fd40f79546b - do_call<core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::par_for_each_in::{closure#0}::{closure_env#0}<&[rustc_span::def_id::LocalDefId], rustc_middle::hir::map::{impl#2}::par_body_owners::{closure_env#0}<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>>>, ()>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:500:40
 124:     0x7fd40f79546b - try<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::par_for_each_in::{closure#0}::{closure_env#0}<&[rustc_span::def_id::LocalDefId], rustc_middle::hir::map::{impl#2}::par_body_owners::{closure_env#0}<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>>>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:464:19
 125:     0x7fd40f79546b - catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::par_for_each_in::{closure#0}::{closure_env#0}<&[rustc_span::def_id::LocalDefId], rustc_middle::hir::map::{impl#2}::par_body_owners::{closure_env#0}<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>>>, ()>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panic.rs:142:14
 126:     0x7fd40f79546b - {closure#0}<&[rustc_span::def_id::LocalDefId], rustc_middle::hir::map::{impl#2}::par_body_owners::{closure_env#0}<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/sync.rs:218:33
 127:     0x7fd40f79546b - for_each<rustc_span::def_id::LocalDefId, rustc_data_structures::sync::par_for_each_in::{closure_env#0}<&[rustc_span::def_id::LocalDefId], rustc_middle::hir::map::{impl#2}::par_body_owners::{closure_env#0}<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/slice/iter/macros.rs:204:21
 128:     0x7fd40f79546b - par_for_each_in<&[rustc_span::def_id::LocalDefId], rustc_middle::hir::map::{impl#2}::par_body_owners::{closure_env#0}<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/sync.rs:217:13
 129:     0x7fd40f73a99e - par_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure_env#0}>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/hir/map/mod.rs:496:9
 130:     0x7fd40f73a99e - {closure#1}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/passes.rs:771:9
 131:     0x7fd40f73a99e - run<(), rustc_interface::passes::analysis::{closure_env#1}>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/profiling.rs:752:9
 132:     0x7fd40f73a99e - time<(), rustc_interface::passes::analysis::{closure_env#1}>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_session/src/utils.rs:11:50
 133:     0x7fd40f7700b0 - analysis
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/passes.rs:770:5
 134:     0x7fd4108e860a - {closure#0}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:577:33
 135:     0x7fd4108e860a - __rust_begin_short_backtrace<rustc_query_impl::query_impl::analysis::dynamic_query::{closure#2}::{closure_env#0}, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:506:18
 136:     0x7fd41096b928 - {closure#2}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:574:25
 137:     0x7fd41096b928 - call_once<rustc_query_impl::query_impl::analysis::dynamic_query::{closure_env#2}, (rustc_middle::ty::context::TyCtxt, ())>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/ops/function.rs:250:5
 138:     0x7fd410679ef9 - compute<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/lib.rs:116:9
 139:     0x7fd410679ef9 - {closure#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:72
 140:     0x7fd410679ef9 - {closure#0}<rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:82:9
 141:     0x7fd410679ef9 - try_with<core::cell::Cell<*const ()>, rustc_middle::ty::context::tls::enter_context::{closure_env#0}<rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16
 142:     0x7fd410679ef9 - with<core::cell::Cell<*const ()>, rustc_middle::ty::context::tls::enter_context::{closure_env#0}<rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9
 143:     0x7fd410679ef9 - enter_context<rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:79:9
 144:     0x7fd410679ef9 - {closure#0}<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:149:13
 145:     0x7fd410679ef9 - {closure#0}<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:133:9
 146:     0x7fd410679ef9 - {closure#0}<rustc_middle::ty::context::tls::with_related_context::{closure_env#0}<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:36
 147:     0x7fd410679ef9 - with_context_opt<rustc_middle::ty::context::tls::with_context::{closure_env#0}<rustc_middle::ty::context::tls::with_related_context::{closure_env#0}<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:100:18
 148:     0x7fd410679ef9 - with_context<rustc_middle::ty::context::tls::with_related_context::{closure_env#0}<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>>, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:111:5
 149:     0x7fd410679ef9 - with_related_context<rustc_query_impl::plumbing::{impl#3}::start_query::{closure_env#0}<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>, rustc_middle::query::erase::Erased<[u8; 1]>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:124:5
 150:     0x7fd410679ef9 - start_query<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::execute_job_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:134:9
 151:     0x7fd410679ef9 - execute_job_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:480:18
 152:     0x7fd410679ef9 - execute_job<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:413:9
 153:     0x7fd410679ef9 - try_execute_query<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:358:13
 154:     0x7fd4108342c2 - {closure#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:32
 155:     0x7fd4108342c2 - maybe_grow<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/stacker-0.1.15/src/lib.rs:55:9
 156:     0x7fd4108342c2 - ensure_sufficient_stack<rustc_middle::query::erase::Erased<[u8; 1]>, rustc_query_system::query::plumbing::get_query_non_incr::{closure_env#0}<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_data_structures/src/stack.rs:17:5
 157:     0x7fd4108342c2 - get_query_non_incr<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_system/src/query/plumbing.rs:810:5
 158:     0x7fd4108342c2 - __rust_end_short_backtrace
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_query_impl/src/plumbing.rs:554:26
 159:     0x7fd40ec9a1a0 - query_get_at<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 1]>>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:155:17
 160:     0x7fd40ec9a1a0 - analysis
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/mod.rs:2179:1
 161:     0x7fd40ec9a1a0 - analysis
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/query/plumbing.rs:376:35
 162:     0x7fd40ec9a1a0 - {closure#4}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_driver_impl/src/lib.rs:412:52
 163:     0x7fd40ec9a1a0 - {closure#0}<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure_env#4}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context.rs:571:37
 164:     0x7fd40ec9a1a0 - {closure#0}<rustc_middle::ty::context::{impl#9}::enter::{closure_env#0}<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure_env#4}, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:82:9
 165:     0x7fd40ec9a1a0 - try_with<core::cell::Cell<*const ()>, rustc_middle::ty::context::tls::enter_context::{closure_env#0}<rustc_middle::ty::context::{impl#9}::enter::{closure_env#0}<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure_env#4}, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:270:16
 166:     0x7fd40ec9a1a0 - with<core::cell::Cell<*const ()>, rustc_middle::ty::context::tls::enter_context::{closure_env#0}<rustc_middle::ty::context::{impl#9}::enter::{closure_env#0}<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure_env#4}, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/local.rs:246:9
 167:     0x7fd40ec9a1a0 - enter_context<rustc_middle::ty::context::{impl#9}::enter::{closure_env#0}<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure_env#4}, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context/tls.rs:79:9
 168:     0x7fd40ec9a1a0 - enter<rustc_driver_impl::run_compiler::{closure#1}::{closure#2}::{closure_env#4}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_middle/src/ty/context.rs:571:9
 169:     0x7fd40ece58aa - {closure#2}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_driver_impl/src/lib.rs:412:13
 170:     0x7fd40ece58aa - enter<rustc_driver_impl::run_compiler::{closure#1}::{closure_env#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/queries.rs:389:19
 171:     0x7fd40ec984b3 - {closure#1}
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_driver_impl/src/lib.rs:353:22
 172:     0x7fd40ec984b3 - {closure#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/interface.rs:332:21
 173:     0x7fd40ec984b3 - set_source_map<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::interface::run_compiler::{closure#0}::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_span/src/lib.rs:1034:5
 174:     0x7fd40ec86024 - {closure#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/interface.rs:326:13
 175:     0x7fd40ec86024 - set<rustc_span::SessionGlobals, rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/.cargo/registry/src/index.crates.io-6f17d22bba15001f/scoped-tls-1.0.0/src/lib.rs:137:9
 176:     0x7fd40eca031c - create_session_globals_then<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_span/src/lib.rs:120:5
 177:     0x7fd40eca031c - {closure#0}<rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/compiler/rustc_interface/src/util.rs:155:38
 178:     0x7fd40eca031c - __rust_begin_short_backtrace<rustc_interface::util::run_in_thread_pool_with_globals::{closure#0}::{closure_env#0}<rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys_common/backtrace.rs:135:18
 179:     0x7fd40ec8cd55 - {closure#0}<rustc_interface::util::run_in_thread_pool_with_globals::{closure#0}::{closure_env#0}<rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/mod.rs:529:17
 180:     0x7fd40ec8cd55 - call_once<core::result::Result<(), rustc_span::ErrorGuaranteed>, std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<rustc_interface::util::run_in_thread_pool_with_globals::{closure#0}::{closure_env#0}<rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/panic/unwind_safe.rs:271:9
 181:     0x7fd40ec8cd55 - do_call<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<rustc_interface::util::run_in_thread_pool_with_globals::{closure#0}::{closure_env#0}<rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:500:40
 182:     0x7fd40ec8cd55 - try<core::result::Result<(), rustc_span::ErrorGuaranteed>, core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<rustc_interface::util::run_in_thread_pool_with_globals::{closure#0}::{closure_env#0}<rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panicking.rs:464:19
 183:     0x7fd40ec8cd55 - catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<rustc_interface::util::run_in_thread_pool_with_globals::{closure#0}::{closure_env#0}<rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/panic.rs:142:14
 184:     0x7fd40ec8cd55 - {closure#1}<rustc_interface::util::run_in_thread_pool_with_globals::{closure#0}::{closure_env#0}<rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/thread/mod.rs:528:30
 185:     0x7fd40ec8cd55 - call_once<std::thread::{impl#0}::spawn_unchecked_::{closure_env#1}<rustc_interface::util::run_in_thread_pool_with_globals::{closure#0}::{closure_env#0}<rustc_interface::interface::run_compiler::{closure_env#0}<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure_env#1}>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, core::result::Result<(), rustc_span::ErrorGuaranteed>>, ()>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/core/src/ops/function.rs:250:5
 186:     0x7fd40d29ceda - call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/boxed.rs:1985:9
 187:     0x7fd40d29ceda - call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global>
                               at /home/matthias/vcs/github/rust_debug_assertions/library/alloc/src/boxed.rs:1985:9
 188:     0x7fd40d2a6d25 - thread_start
                               at /home/matthias/vcs/github/rust_debug_assertions/library/std/src/sys/unix/thread.rs:108:17
 189:     0x7fd40d06a44b - <unknown>
 190:     0x7fd40d0ede40 - <unknown>
 191:                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.72.0-dev running on x86_64-unknown-linux-gnu

note: compiler flags: -Z dump-mir=all -Z dump-mir-dir=dir

query stack during panic:
#0 [mir_borrowck] borrow-checking `main`
#1 [analysis] running analysis passes on this crate
end of query stack
warning: 1 warning emitted

@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. requires-nightly This issue requires a nightly compiler in some way. requires-debug-assertions This issue requires debug-assertions in some way labels Jun 7, 2023
@matthiaskrgr
Copy link
Member Author

matthiaskrgr commented Jun 7, 2023

Also crashes if I #![deny(indirect_structural_match)] :/

@spastorino
Copy link
Member

This issue is similar to the one address in #118118, but my PR doesn't fix this one.

@matthiaskrgr matthiaskrgr removed the requires-debug-assertions This issue requires debug-assertions in some way label Mar 13, 2024
@matthiaskrgr
Copy link
Member Author

no longer requires debug assertions 🎉

@matthiaskrgr
Copy link
Member Author

tests/ui/rfcs/rfc-1445-restrict-constants-in-patterns/cant-hide-behind-doubly-indirect-param.rs

// This is part of a set of tests exploring the different ways a
// structural-match ADT might try to hold a
// non-structural-match in hidden manner that lets matches
// through that we had intended to reject.
//
// See discussion on rust-lang/rust#62307 and rust-lang/rust#62339
#![warn(indirect_structural_match)]
//@ run-pass

struct NoDerive(#[allow(dead_code)] i32);

// This impl makes NoDerive irreflexive.
impl PartialEq for NoDerive { fn eq(&self, _: &Self) -> bool { false } }

impl Eq for NoDerive { }

#[derive(PartialEq, Eq)]
struct WrapParam<'a, T>(&'a &'a T);

const WRAP_DOUBLY_INDIRECT_PARAM: & &WrapParam<NoDerive> = & &WrapParam(& & NoDerive(0));

fn main() {
    match WRAP_DOUBLY_INDIRECT_PARAM {
        WRAP_DOUBLY_INDIRECT_PARAM => { panic!("WRAP_DOUBLY_INDIRECT_PARAM matched itself"); }
        //~^ WARN must be annotated with `#[derive(PartialEq)]`
        //~| WARN this was previously accepted
        _ => { println!("WRAP_DOUBLY_INDIRECT_PARAM correctly did not match itself"); }
    }
}

rustc -Zdump-mir=all -Zdump-mir-dir=/tmp/ -Zincremental-verify-ich=yes file.rs
=>

warning: lint `unused_tuple_struct_fields` has been renamed to `dead_code`
  --> /tmp/crash.rs:10:25
   |
10 | struct NoDerive(#[allow(unused_tuple_struct_fields)] i32);
   |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use the new name: `dead_code`
   |
   = note: `#[warn(renamed_and_removed_lints)]` on by default

warning: to use a constant of type `NoDerive` in a pattern, `NoDerive` must be annotated with `#[derive(PartialEq)]`
  --> /tmp/crash.rs:24:9
   |
24 | ...   WRAP_DOUBLY_INDIRECT_INLINE => { panic!("WRAP_DOUBLY_INDIRECT_INLINE matche...
   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
   = note: for more information, see issue #120362 <https://github.com/rust-lang/rust/issues/120362>
   = note: the traits must be derived, manual `impl`s are not sufficient
   = note: see https://doc.rust-lang.org/stable/std/marker/trait.StructuralPartialEq.html for details
note: the lint level is defined here
  --> /tmp/crash.rs:7:9
   |
7  | #![warn(indirect_structural_match)]
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^

thread 'rustc' panicked at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/compiler/rustc_type_ir/src/region_kind.rs:283:17:
region variables should not be hashed: '?17
stack backtrace:
   0:     0x7f5860ca5c22 - std::backtrace_rs::backtrace::libunwind::trace::hfaaeee8ba270e11c
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
   1:     0x7f5860ca5c22 - std::backtrace_rs::backtrace::trace_unsynchronized::h6fb1c4d325d0d969
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f5860ca5c22 - std::sys_common::backtrace::_print_fmt::hd36d192d75c5bc13
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/sys_common/backtrace.rs:68:5
   3:     0x7f5860ca5c22 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hebc622152f918065
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x7f5860cf6eac - core::fmt::rt::Argument::fmt::h42d7ab9e6b9d76d9
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/core/src/fmt/rt.rs:142:9
   5:     0x7f5860cf6eac - core::fmt::write::hceb334e2bb0855cb
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/core/src/fmt/mod.rs:1153:17
   6:     0x7f5860c9aa1f - std::io::Write::write_fmt::h21e1401d0661ae6d
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/io/mod.rs:1843:15
   7:     0x7f5860ca59f4 - std::sys_common::backtrace::_print::hd5d84a1029af69b4
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/sys_common/backtrace.rs:47:5
   8:     0x7f5860ca59f4 - std::sys_common::backtrace::print::h6fd3aca52697573b
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/sys_common/backtrace.rs:34:9
   9:     0x7f5860ca86fb - std::panicking::default_hook::{{closure}}::h4a9c0b0282b315bd
  10:     0x7f5860ca8453 - std::panicking::default_hook::h64aacf0d5c35b498
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/panicking.rs:292:9
  11:     0x7f585d8f82df - std[643654c1cf6ed541]::panicking::update_hook::<alloc[2118d7c564138cf7]::boxed::Box<rustc_driver_impl[5dd99c5338b3138f]::install_ice_hook::{closure#0}>>::{closure#0}
  12:     0x7f5860ca8e60 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::haf92efa441d110c6
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/alloc/src/boxed.rs:2034:9
  13:     0x7f5860ca8e60 - std::panicking::rust_panic_with_hook::h572774bd80531e18
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/panicking.rs:783:13
  14:     0x7f5860ca8ba2 - std::panicking::begin_panic_handler::{{closure}}::he9b751db0dede176
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/panicking.rs:657:13
  15:     0x7f5860ca60f6 - std::sys_common::backtrace::__rust_end_short_backtrace::h181bd77376b4f0f9
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/sys_common/backtrace.rs:171:18
  16:     0x7f5860ca88d4 - rust_begin_unwind
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/panicking.rs:645:5
  17:     0x7f5860cf33c5 - core::panicking::panic_fmt::ha1f618a40e3acdf1
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/core/src/panicking.rs:72:14
  18:     0x7f585ed4d43b - <rustc_middle[86b082b6ae20a938]::ty::generic_args::GenericArg as rustc_data_structures[d6b8812cf1da7772]::stable_hasher::HashStable<rustc_query_system[e51c9dbcb47ac10a]::ich::hcx::StableHashingContext>>::hash_stable
  19:     0x7f585ec50836 - <rustc_type_ir[37f9c129366c5d39]::ty_info::WithCachedTypeInfo<rustc_type_ir[37f9c129366c5d39]::ty_kind::TyKind<rustc_middle[86b082b6ae20a938]::ty::context::TyCtxt>> as rustc_data_structures[d6b8812cf1da7772]::stable_hasher::HashStable<rustc_query_system[e51c9dbcb47ac10a]::ich::hcx::StableHashingContext>>::hash_stable
  20:     0x7f585f644dcc - <rustc_type_ir[37f9c129366c5d39]::ty_info::WithCachedTypeInfo<rustc_middle[86b082b6ae20a938]::ty::consts::ConstData> as rustc_data_structures[d6b8812cf1da7772]::stable_hasher::HashStable<rustc_query_system[e51c9dbcb47ac10a]::ich::hcx::StableHashingContext>>::hash_stable
  21:     0x7f585e11d39b - rustc_query_impl[72e0720568441596]::plumbing::query_key_hash_verify::<rustc_query_impl[72e0720568441596]::DynamicConfig<rustc_query_system[e51c9dbcb47ac10a]::query::caches::DefaultCache<rustc_middle[86b082b6ae20a938]::ty::consts::Const, rustc_middle[86b082b6ae20a938]::query::erase::Erased<[u8; 24usize]>>, false, false, false>>::{closure#0}
  22:     0x7f585fa6d239 - <rustc_query_system[e51c9dbcb47ac10a]::query::caches::DefaultCache<rustc_middle[86b082b6ae20a938]::ty::consts::Const, rustc_middle[86b082b6ae20a938]::query::erase::Erased<[u8; 24usize]>> as rustc_query_system[e51c9dbcb47ac10a]::query::caches::QueryCache>::iter
  23:     0x7f585fa6d0a5 - rustc_query_impl[72e0720568441596]::query_impl::destructure_const::query_key_hash_verify
  24:     0x7f585f6b8be9 - rustc_interface[5852ce9831de6ee9]::interface::run_compiler::<core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>, rustc_driver_impl[5dd99c5338b3138f]::run_compiler::{closure#0}>::{closure#0}
  25:     0x7f585fc2fb05 - std[643654c1cf6ed541]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[5852ce9831de6ee9]::util::run_in_thread_with_globals<rustc_interface[5852ce9831de6ee9]::util::run_in_thread_pool_with_globals<rustc_interface[5852ce9831de6ee9]::interface::run_compiler<core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>, rustc_driver_impl[5dd99c5338b3138f]::run_compiler::{closure#0}>::{closure#0}, core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>>::{closure#0}, core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>>
  26:     0x7f585fc2f932 - <<std[643654c1cf6ed541]::thread::Builder>::spawn_unchecked_<rustc_interface[5852ce9831de6ee9]::util::run_in_thread_with_globals<rustc_interface[5852ce9831de6ee9]::util::run_in_thread_pool_with_globals<rustc_interface[5852ce9831de6ee9]::interface::run_compiler<core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>, rustc_driver_impl[5dd99c5338b3138f]::run_compiler::{closure#0}>::{closure#0}, core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>>::{closure#0}, core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>>::{closure#1} as core[7caf98a7402569f1]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  27:     0x7f5860cb2505 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h77b8b116ff3c4255
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/alloc/src/boxed.rs:2020:9
  28:     0x7f5860cb2505 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h994160effdff6027
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/alloc/src/boxed.rs:2020:9
  29:     0x7f5860cb2505 - std::sys::pal::unix::thread::Thread::new::thread_start::h336eeebfb56643a3
                               at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/sys/pal/unix/thread.rs:108:17
  30:     0x7f585a8a955a - <unknown>
  31:     0x7f585a926a3c - <unknown>
  32:                0x0 - <unknown>

error: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please attach the file at `/tmp/rustc-ice-2024-03-13T18_33_18-279183.txt` to your bug report

note: compiler flags: -Z dump-mir=all -Z dump-mir-dir=/tmp/ -Z incremental-verify-ich=yes

query stack during panic:
end of query stack
warning: 2 warnings emitted

@matthiaskrgr
Copy link
Member Author

Seems to be related to #122227 cc @Zoxc

@Zoxc
Copy link
Contributor

Zoxc commented Mar 14, 2024

That just adds additional verification to -Zincremental-verify-ich=yes so it's not the source of the error.

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) ❄️ requires-nightly This issue requires a nightly compiler in some way. 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