Skip to content

ICE !self.has_non_region_infer() #146852

@matthiaskrgr

Description

@matthiaskrgr

auto-reduced (treereduce-rust):

//@compile-flags: -Wrust-2021-incompatible-closure-captures
use std::ops::{Deref, DerefMut};

fn impl_deref_mut_impl_fn_mut() -> impl DerefMut {
    if false {
        func();
    }

    let mut state = 0;
    Box::new(move || state += 1)
}
original code

original:

//@ revisions: current next
//@[next] compile-flags: -Znext-solver
//@ ignore-compare-mode-next-solver (explicit revisions)
//@ check-pass

// Regression test for trait-system-refactor-initiative#181. We want to
// be able to step through `impl Deref` in its defining scope.
use std::ops::{Deref, DerefMut};
fn impl_deref_fn() -> impl Deref<Target = fn()> {
    if false {
        let func = impl_deref_fn();
        func(|s| s.len());
    }

    &((|_| ()) as fn(_))
}

fn impl_deref_impl_fn() -> impl Deref<Target = impl Fn()> {
    if false {
        let func = impl_deref_impl_fn();
        func();
    }

    &|| ()
}

fn impl_deref_impl_deref_impl_fn() -> impl Deref<Target = impl Deref<Target = fn(fn(&str) -> usize)>> {
    if false {
        let func = impl_deref_impl_deref_impl_fn();
        func();
    }

    &&|| ()
}


fn impl_deref_mut_impl_fn() -> impl DerefMut<Target = impl Fn()> {
    if false {
        let func = impl_deref_impl_fn();
        func();
    }

    Box::new(|_| s.len())
}


fn impl_deref_mut_impl_fn_mut() -> impl DerefMut<Target = impl FnMut()> {
    if false {
        let func = impl_deref_fn();
        func(|s| s.len());
    }

    let mut state = 0;
    Box::new(move || state += 1)
}
fn main() {}

Version information

rustc 1.92.0-nightly (6710835ae 2025-09-21)
binary: rustc
commit-hash: 6710835ae739ca326441ff6c63d24fb123858300
commit-date: 2025-09-21
host: x86_64-unknown-linux-gnu
release: 1.92.0-nightly
LLVM version: 21.1.1

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Wrust-2021-incompatible-closure-captures

Program output

warning: unused import: `Deref`
 --> /tmp/icemaker_global_tempdir.9OGbEmm1La66/rustc_testrunner_tmpdir_reporting.gYk9QOO15Nkx/mvce.rs:1:16
  |
1 | use std::ops::{Deref, DerefMut};
  |                ^^^^^
  |
  = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default

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

error[E0425]: cannot find function `func` in this scope
 --> /tmp/icemaker_global_tempdir.9OGbEmm1La66/rustc_testrunner_tmpdir_reporting.gYk9QOO15Nkx/mvce.rs:5:9
  |
5 |         func();
  |         ^^^^ not found in this scope


thread 'rustc' (1164768) panicked at /rustc-dev/6710835ae739ca326441ff6c63d24fb123858300/compiler/rustc_middle/src/ty/util.rs:1371:9:
assertion failed: !self.has_non_region_infer()
stack backtrace:
   0:     0x7fc37cdfd2f3 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h8b9f34974c088868
   1:     0x7fc37d402084 - core::fmt::write::ha84e1c9772833f1c
   2:     0x7fc37cdb1ca1 - std::io::Write::write_fmt::hdb5fdb4d0e28d1be
   3:     0x7fc37cdc3062 - std::sys::backtrace::BacktraceLock::print::h29e4d84151a2f709
   4:     0x7fc37cdc8fc9 - std::panicking::default_hook::{{closure}}::h90e623ca4a255582
   5:     0x7fc37cdc8af3 - std::panicking::default_hook::h02e3e409619ad50e
   6:     0x7fc37bdebbd7 - std[69fcff7c3a8a2b12]::panicking::update_hook::<alloc[83c71a3d7acdd5e5]::boxed::Box<rustc_driver_impl[9b7ad042c9288b75]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x7fc37cdc93ef - std::panicking::panic_with_hook::h40deba1fb83c7386
   8:     0x7fc37cdc9176 - std::panicking::panic_handler::{{closure}}::hf930f7faa6618f23
   9:     0x7fc37cdc31a9 - std::sys::backtrace::__rust_end_short_backtrace::hbfedcee875752d04
  10:     0x7fc37cda3cdd - __rustc[c91a49d78905620d]::rust_begin_unwind
  11:     0x7fc37a0fcc60 - core::panicking::panic_fmt::hc59e92dd4cdaa921
  12:     0x7fc37975d03c - core::panicking::panic::h236b3c254bbe2c0f
  13:     0x7fc37c12eb14 - <rustc_middle[d166d65305753c4d]::ty::Ty>::has_significant_drop
  14:     0x7fc37c11d432 - <rustc_hir_typeck[5a6bcc475828a86e]::fn_ctxt::FnCtxt>::perform_2229_migration_analysis
  15:     0x7fc37e13b1d0 - <rustc_hir_typeck[5a6bcc475828a86e]::fn_ctxt::FnCtxt>::analyze_closure
  16:     0x7fc37d808eca - <rustc_hir_typeck[5a6bcc475828a86e]::upvar::InferBorrowKindVisitor as rustc_hir[dc38ffd23ce78033]::intravisit::Visitor>::visit_expr
  17:     0x7fc37d80905c - <rustc_hir_typeck[5a6bcc475828a86e]::upvar::InferBorrowKindVisitor as rustc_hir[dc38ffd23ce78033]::intravisit::Visitor>::visit_expr
  18:     0x7fc37d80ca71 - rustc_hir_typeck[5a6bcc475828a86e]::typeck_with_inspect::{closure#0}
  19:     0x7fc37d80ab76 - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>>
  20:     0x7fc37d603e04 - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_data_structures[f37fab66769ac52b]::vec_cache::VecCache<rustc_span[fcf7ee74bdb06a40]::def_id::LocalDefId, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[6e6e8a69b748eadb]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  21:     0x7fc37d603789 - rustc_query_impl[83f7a75e5eebdaef]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
  22:     0x7fc37de8837a - rustc_mir_build[f9f6eb0bbed99752]::thir::pattern::check_match::check_match
  23:     0x7fc37de8775b - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::check_match::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 1usize]>>
  24:     0x7fc37dcd9e2f - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_data_structures[f37fab66769ac52b]::vec_cache::VecCache<rustc_span[fcf7ee74bdb06a40]::def_id::LocalDefId, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[6e6e8a69b748eadb]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  25:     0x7fc37d7ece09 - rustc_query_impl[83f7a75e5eebdaef]::query_impl::check_match::get_query_non_incr::__rust_end_short_backtrace
  26:     0x7fc37d7ecf1a - rustc_mir_build[f9f6eb0bbed99752]::builder::build_mir
  27:     0x7fc37d4077c1 - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::mir_built::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>>
  28:     0x7fc37d603e04 - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_data_structures[f37fab66769ac52b]::vec_cache::VecCache<rustc_span[fcf7ee74bdb06a40]::def_id::LocalDefId, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[6e6e8a69b748eadb]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  29:     0x7fc37d603849 - rustc_query_impl[83f7a75e5eebdaef]::query_impl::mir_built::get_query_non_incr::__rust_end_short_backtrace
  30:     0x7fc37d42dad5 - rustc_mir_transform[3a726c8aa9f96935]::ffi_unwind_calls::has_ffi_unwind_calls
  31:     0x7fc37d42d4ab - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::has_ffi_unwind_calls::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 1usize]>>
  32:     0x7fc37dcd9e2f - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_data_structures[f37fab66769ac52b]::vec_cache::VecCache<rustc_span[fcf7ee74bdb06a40]::def_id::LocalDefId, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[6e6e8a69b748eadb]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  33:     0x7fc37dcd9afd - rustc_query_impl[83f7a75e5eebdaef]::query_impl::has_ffi_unwind_calls::get_query_non_incr::__rust_end_short_backtrace
  34:     0x7fc37aadca5d - rustc_mir_transform[3a726c8aa9f96935]::mir_promoted
  35:     0x7fc37dd69512 - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::mir_promoted::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 16usize]>>
  36:     0x7fc37dd697d5 - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_data_structures[f37fab66769ac52b]::vec_cache::VecCache<rustc_span[fcf7ee74bdb06a40]::def_id::LocalDefId, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 16usize]>, rustc_query_system[6e6e8a69b748eadb]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  37:     0x7fc37dd69352 - rustc_query_impl[83f7a75e5eebdaef]::query_impl::mir_promoted::get_query_non_incr::__rust_end_short_backtrace
  38:     0x7fc37e5e13a3 - rustc_borrowck[6c01caa2e799678]::mir_borrowck
  39:     0x7fc37e5e125d - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>>
  40:     0x7fc37d603e04 - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_data_structures[f37fab66769ac52b]::vec_cache::VecCache<rustc_span[fcf7ee74bdb06a40]::def_id::LocalDefId, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[6e6e8a69b748eadb]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  41:     0x7fc37d608749 - rustc_query_impl[83f7a75e5eebdaef]::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
  42:     0x7fc37e6923ef - rustc_hir_analysis[44f7c251c7efdbb]::collect::type_of::opaque::find_opaque_ty_constraints_for_rpit
  43:     0x7fc37e692178 - rustc_hir_analysis[44f7c251c7efdbb]::collect::type_of::type_of_opaque
  44:     0x7fc37e69206d - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::type_of_opaque::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>>
  45:     0x7fc37d41adfa - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_query_system[6e6e8a69b748eadb]::query::caches::DefIdCache<rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  46:     0x7fc37e61c1b7 - rustc_query_impl[83f7a75e5eebdaef]::query_impl::type_of_opaque::get_query_non_incr::__rust_end_short_backtrace
  47:     0x7fc37dd204d8 - rustc_hir_analysis[44f7c251c7efdbb]::collect::type_of::type_of
  48:     0x7fc37d41c166 - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::type_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>>
  49:     0x7fc37d41adfa - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_query_system[6e6e8a69b748eadb]::query::caches::DefIdCache<rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  50:     0x7fc37d41a99d - rustc_query_impl[83f7a75e5eebdaef]::query_impl::type_of::get_query_non_incr::__rust_end_short_backtrace
  51:     0x7fc37e692aec - rustc_hir_analysis[44f7c251c7efdbb]::check::check::check_opaque
  52:     0x7fc37dce2584 - rustc_hir_analysis[44f7c251c7efdbb]::check::check::check_item_type
  53:     0x7fc37dcda839 - rustc_hir_analysis[44f7c251c7efdbb]::check::wfcheck::check_well_formed
  54:     0x7fc37dcda81b - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::check_well_formed::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 1usize]>>
  55:     0x7fc37dcda092 - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_data_structures[f37fab66769ac52b]::vec_cache::VecCache<rustc_span[fcf7ee74bdb06a40]::def_id::LocalDefId, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 1usize]>, rustc_query_system[6e6e8a69b748eadb]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  56:     0x7fc37dcd9b96 - rustc_query_impl[83f7a75e5eebdaef]::query_impl::check_well_formed::get_query_non_incr::__rust_end_short_backtrace
  57:     0x7fc37dcd7215 - rustc_hir_analysis[44f7c251c7efdbb]::check::wfcheck::check_type_wf
  58:     0x7fc37dcd70b5 - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::check_type_wf::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 1usize]>>
  59:     0x7fc37e43a308 - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_query_system[6e6e8a69b748eadb]::query::caches::SingleCache<rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  60:     0x7fc37e43a0ce - rustc_query_impl[83f7a75e5eebdaef]::query_impl::check_type_wf::get_query_non_incr::__rust_end_short_backtrace
  61:     0x7fc37de70e9c - rustc_hir_analysis[44f7c251c7efdbb]::check_crate
  62:     0x7fc37d6054f0 - rustc_interface[3d67779a474127f6]::passes::analysis
  63:     0x7fc37d6051ad - rustc_query_impl[83f7a75e5eebdaef]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[83f7a75e5eebdaef]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 0usize]>>
  64:     0x7fc37e440920 - rustc_query_system[6e6e8a69b748eadb]::query::plumbing::try_execute_query::<rustc_query_impl[83f7a75e5eebdaef]::DynamicConfig<rustc_query_system[6e6e8a69b748eadb]::query::caches::SingleCache<rustc_middle[d166d65305753c4d]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[83f7a75e5eebdaef]::plumbing::QueryCtxt, false>
  65:     0x7fc37e440576 - rustc_query_impl[83f7a75e5eebdaef]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  66:     0x7fc37e6480cf - rustc_interface[3d67779a474127f6]::passes::create_and_enter_global_ctxt::<core[218f6bb2377652a6]::option::Option<rustc_interface[3d67779a474127f6]::queries::Linker>, rustc_driver_impl[9b7ad042c9288b75]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  67:     0x7fc37e6b303e - rustc_interface[3d67779a474127f6]::interface::run_compiler::<(), rustc_driver_impl[9b7ad042c9288b75]::run_compiler::{closure#0}>::{closure#1}
  68:     0x7fc37e5a63b8 - std[69fcff7c3a8a2b12]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[3d67779a474127f6]::util::run_in_thread_with_globals<rustc_interface[3d67779a474127f6]::util::run_in_thread_pool_with_globals<rustc_interface[3d67779a474127f6]::interface::run_compiler<(), rustc_driver_impl[9b7ad042c9288b75]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  69:     0x7fc37e5a609c - <<std[69fcff7c3a8a2b12]::thread::Builder>::spawn_unchecked_<rustc_interface[3d67779a474127f6]::util::run_in_thread_with_globals<rustc_interface[3d67779a474127f6]::util::run_in_thread_pool_with_globals<rustc_interface[3d67779a474127f6]::interface::run_compiler<(), rustc_driver_impl[9b7ad042c9288b75]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[218f6bb2377652a6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  70:     0x7fc37e5abe4d - std::sys::thread::unix::Thread::new::thread_start::h2cf3668a0ebb503f
  71:     0x7fc377e969cb - <unknown>
  72:     0x7fc377f1aa0c - <unknown>
  73:                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 make sure that you have updated to the latest nightly

note: rustc 1.92.0-nightly (6710835ae 2025-09-21) running on x86_64-unknown-linux-gnu

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

query stack during panic:
#0 [typeck] type-checking `impl_deref_mut_impl_fn_mut`
#1 [check_match] match-checking `impl_deref_mut_impl_fn_mut`
#2 [mir_built] building MIR for `impl_deref_mut_impl_fn_mut`
#3 [has_ffi_unwind_calls] checking if `impl_deref_mut_impl_fn_mut` contains FFI-unwind calls
#4 [mir_promoted] promoting constants in MIR for `impl_deref_mut_impl_fn_mut`
#5 [mir_borrowck] borrow-checking `impl_deref_mut_impl_fn_mut`
#6 [type_of_opaque] computing type of opaque `impl_deref_mut_impl_fn_mut::{opaque#0}`
#7 [type_of] computing type of `impl_deref_mut_impl_fn_mut::{opaque#0}`
#8 [check_well_formed] checking that `impl_deref_mut_impl_fn_mut::{opaque#0}` is well-formed
#9 [check_type_wf] checking that types are well-formed
#10 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 2 previous errors; 1 warning emitted

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions