Skip to content

ICE: generics_of: unexpected node kind ConstArg(ConstArg #148838

@matthiaskrgr

Description

@matthiaskrgr

auto-reduced (treereduce-rust):

#![feature(min_generic_const_args)]
#![feature(generic_const_exprs)]
struct Both<const is_123: u32 = 3, T> {
    a: A<{ B::<1>::M }>,
}

original:

#![non_upper_case_globals = "ABCD"]
#![yes_ord(dead_code)]

struct Both<const is_123: u32=3, T> {
    a: A<{ B::<1>::M }>,
}

Version information

rustc 1.93.0-nightly (2636cb4c1 2025-11-11)
binary: rustc
commit-hash: 2636cb4c1328f5a3ab05b8d13a666ac5f3a48a08
commit-date: 2025-11-11
host: x86_64-unknown-linux-gnu
release: 1.93.0-nightly
LLVM version: 21.1.5

Possibly related line of code:

Node::Synthetic => span_bug!(
tcx.def_span(def_id),
"synthetic HIR should have its `generics_of` explicitly fed"
),
_ => span_bug!(tcx.def_span(def_id), "generics_of: unexpected node kind {node:?}"),
};
// Add in the self type parameter.
let opt_self = if let Node::Item(item) = node
&& let ItemKind::Trait(..) | ItemKind::TraitAlias(..) = item.kind
{

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zcrate-attr=feature(min_generic_const_args) -Zcrate-attr=feature(generic_const_exprs)

Program output

error: generic parameters with a default must be trailing
 --> /tmp/icemaker_global_tempdir.pMUmmFc3ZGer/rustc_testrunner_tmpdir_reporting.aRsqC0nvtFAY/mvce.rs:1:19
  |
1 | struct Both<const is_123: u32 = 3, T> {
  |                   ^^^^^^

error[E0412]: cannot find type `A` in this scope
 --> /tmp/icemaker_global_tempdir.pMUmmFc3ZGer/rustc_testrunner_tmpdir_reporting.aRsqC0nvtFAY/mvce.rs:2:8
  |
1 | struct Both<const is_123: u32 = 3, T> {
  |                                    - similarly named type parameter `T` defined here
2 |     a: A<{ B::<1>::M }>,
  |        ^ help: a type parameter with a similar name exists: `T`

warning: the feature `min_generic_const_args` is incomplete and may not be safe to use and/or cause compiler crashes
 --> <crate attribute>:1:12
  |
1 | #![feature(min_generic_const_args)]
  |            ^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #132980 <https://github.com/rust-lang/rust/issues/132980> for more information
  = note: `#[warn(incomplete_features)]` on by default

warning: the feature `generic_const_exprs` is incomplete and may not be safe to use and/or cause compiler crashes
 --> <crate attribute>:1:12
  |
1 | #![feature(generic_const_exprs)]
  |            ^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #76560 <https://github.com/rust-lang/rust/issues/76560> for more information

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

error: internal compiler error: compiler/rustc_hir_analysis/src/collect/generics_of.rs:212:14: generics_of: unexpected node kind ConstArg(ConstArg { hir_id: HirId(DefId(0:3 ~ mvce[f463]::Both).14), kind: Path(Resolved(None, Path { span: /tmp/icemaker_global_tempdir.pMUmmFc3ZGer/rustc_testrunner_tmpdir_reporting.aRsqC0nvtFAY/mvce.rs:2:12: 2:21 (#0), res: Err, segments: [PathSegment { ident: B#0, hir_id: HirId(DefId(0:3 ~ mvce[f463]::Both).12), res: Err, args: Some(GenericArgs { args: [Const(ConstArg { hir_id: HirId(DefId(0:3 ~ mvce[f463]::Both).11), kind: Anon(AnonConst { hir_id: HirId(DefId(0:3 ~ mvce[f463]::Both).9), def_id: DefId(0:9 ~ mvce[f463]::Both::a::{constant#0}::{constant#0}), body: BodyId { hir_id: HirId(DefId(0:3 ~ mvce[f463]::Both).10) }, span: /tmp/icemaker_global_tempdir.pMUmmFc3ZGer/rustc_testrunner_tmpdir_reporting.aRsqC0nvtFAY/mvce.rs:2:16: 2:17 (#0) }) })], constraints: [], parenthesized: No, span_ext: /tmp/icemaker_global_tempdir.pMUmmFc3ZGer/rustc_testrunner_tmpdir_reporting.aRsqC0nvtFAY/mvce.rs:2:15: 2:18 (#0) }), infer_args: false }, PathSegment { ident: M#0, hir_id: HirId(DefId(0:3 ~ mvce[f463]::Both).13), res: Err, args: None, infer_args: false }] })) })
 --> /tmp/icemaker_global_tempdir.pMUmmFc3ZGer/rustc_testrunner_tmpdir_reporting.aRsqC0nvtFAY/mvce.rs:2:12
  |
2 |     a: A<{ B::<1>::M }>,
  |            ^^^^^^^^^


thread 'rustc' (1550694) panicked at compiler/rustc_hir_analysis/src/collect/generics_of.rs:212:14:
Box<dyn Any>
stack backtrace:
   0:     0x7fe014e77793 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h8508b8692a67f424
   1:     0x7fe015601afc - core::fmt::write::h892b976990d68807
   2:     0x7fe014e2c113 - std::io::Write::write_fmt::h2cfb6ae7ceafc18f
   3:     0x7fe014e3d722 - std::sys::backtrace::BacktraceLock::print::h6b401f5a90fe0615
   4:     0x7fe014e438b9 - std::panicking::default_hook::{{closure}}::h4bcd3e8272ea6e1e
   5:     0x7fe014e433e3 - std::panicking::default_hook::hc47768de8da9bf00
   6:     0x7fe013e32f01 - std[2b52140d45a5d53]::panicking::update_hook::<alloc[f328c0b594c54d96]::boxed::Box<rustc_driver_impl[ff76f056f877a8d6]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x7fe014e43cdb - std::panicking::panic_with_hook::h50a148ea39b0e607
   8:     0x7fe013e6ee31 - std[2b52140d45a5d53]::panicking::begin_panic::<rustc_errors[76704593d079f0be]::ExplicitBug>::{closure#0}
   9:     0x7fe013e61576 - std[2b52140d45a5d53]::sys::backtrace::__rust_end_short_backtrace::<std[2b52140d45a5d53]::panicking::begin_panic<rustc_errors[76704593d079f0be]::ExplicitBug>::{closure#0}, !>
  10:     0x7fe013e610d7 - std[2b52140d45a5d53]::panicking::begin_panic::<rustc_errors[76704593d079f0be]::ExplicitBug>
  11:     0x7fe013e8d641 - <rustc_errors[76704593d079f0be]::diagnostic::BugAbort as rustc_errors[76704593d079f0be]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  12:     0x7fe0143f588c - <rustc_errors[76704593d079f0be]::DiagCtxtHandle>::span_bug::<rustc_span[1859fa485aa88c5d]::span_encoding::Span, alloc[f328c0b594c54d96]::string::String>
  13:     0x7fe014418dc7 - rustc_middle[48f5e10766353194]::util::bug::opt_span_bug_fmt::<rustc_span[1859fa485aa88c5d]::span_encoding::Span>::{closure#0}
  14:     0x7fe0144190ca - rustc_middle[48f5e10766353194]::ty::context::tls::with_opt::<rustc_middle[48f5e10766353194]::util::bug::opt_span_bug_fmt<rustc_span[1859fa485aa88c5d]::span_encoding::Span>::{closure#0}, !>::{closure#0}
  15:     0x7fe014409ecb - rustc_middle[48f5e10766353194]::ty::context::tls::with_context_opt::<rustc_middle[48f5e10766353194]::ty::context::tls::with_opt<rustc_middle[48f5e10766353194]::util::bug::opt_span_bug_fmt<rustc_span[1859fa485aa88c5d]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
  16:     0x7fe012710ec7 - rustc_middle[48f5e10766353194]::util::bug::span_bug_fmt::<rustc_span[1859fa485aa88c5d]::span_encoding::Span>
  17:     0x7fe015fa2578 - rustc_hir_analysis[95d84e02a3e62ea1]::collect::generics_of::generics_of
  18:     0x7fe01561b969 - rustc_query_impl[d248f320eda2a0f9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d248f320eda2a0f9]::query_impl::generics_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>>
  19:     0x7fe01561c046 - rustc_query_system[636933bf47b8a8e3]::query::plumbing::try_execute_query::<rustc_query_impl[d248f320eda2a0f9]::DynamicConfig<rustc_query_system[636933bf47b8a8e3]::query::caches::DefIdCache<rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[d248f320eda2a0f9]::plumbing::QueryCtxt, false>
  20:     0x7fe01561bd6b - rustc_query_impl[d248f320eda2a0f9]::query_impl::generics_of::get_query_non_incr::__rust_end_short_backtrace
  21:     0x7fe015fa080f - rustc_hir_analysis[95d84e02a3e62ea1]::collect::generics_of::generics_of
  22:     0x7fe01561b969 - rustc_query_impl[d248f320eda2a0f9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d248f320eda2a0f9]::query_impl::generics_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>>
  23:     0x7fe01561c046 - rustc_query_system[636933bf47b8a8e3]::query::plumbing::try_execute_query::<rustc_query_impl[d248f320eda2a0f9]::DynamicConfig<rustc_query_system[636933bf47b8a8e3]::query::caches::DefIdCache<rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[d248f320eda2a0f9]::plumbing::QueryCtxt, false>
  24:     0x7fe01561bd6b - rustc_query_impl[d248f320eda2a0f9]::query_impl::generics_of::get_query_non_incr::__rust_end_short_backtrace
  25:     0x7fe015fe8f82 - rustc_hir_analysis[95d84e02a3e62ea1]::collect::predicates_of::gather_explicit_predicates_of::{closure#0}
  26:     0x7fe015fe6c10 - rustc_query_impl[d248f320eda2a0f9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d248f320eda2a0f9]::query_impl::explicit_predicates_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 24usize]>>
  27:     0x7fe01574449a - rustc_query_system[636933bf47b8a8e3]::query::plumbing::try_execute_query::<rustc_query_impl[d248f320eda2a0f9]::DynamicConfig<rustc_query_system[636933bf47b8a8e3]::query::caches::DefIdCache<rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[d248f320eda2a0f9]::plumbing::QueryCtxt, false>
  28:     0x7fe015743da2 - rustc_query_impl[d248f320eda2a0f9]::query_impl::explicit_predicates_of::get_query_non_incr::__rust_end_short_backtrace
  29:     0x7fe015743183 - rustc_query_impl[d248f320eda2a0f9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d248f320eda2a0f9]::query_impl::predicates_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 24usize]>>
  30:     0x7fe0157444b9 - rustc_query_system[636933bf47b8a8e3]::query::plumbing::try_execute_query::<rustc_query_impl[d248f320eda2a0f9]::DynamicConfig<rustc_query_system[636933bf47b8a8e3]::query::caches::DefIdCache<rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[d248f320eda2a0f9]::plumbing::QueryCtxt, false>
  31:     0x7fe015743ca2 - rustc_query_impl[d248f320eda2a0f9]::query_impl::predicates_of::get_query_non_incr::__rust_end_short_backtrace
  32:     0x7fe015ae3748 - rustc_ty_utils[8aae495b601b2150]::ty::param_env
  33:     0x7fe015ae2cd9 - rustc_query_impl[d248f320eda2a0f9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d248f320eda2a0f9]::query_impl::param_env::dynamic_query::{closure#2}::{closure#0}, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>>
  34:     0x7fe01561c046 - rustc_query_system[636933bf47b8a8e3]::query::plumbing::try_execute_query::<rustc_query_impl[d248f320eda2a0f9]::DynamicConfig<rustc_query_system[636933bf47b8a8e3]::query::caches::DefIdCache<rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[d248f320eda2a0f9]::plumbing::QueryCtxt, false>
  35:     0x7fe01561bb31 - rustc_query_impl[d248f320eda2a0f9]::query_impl::param_env::get_query_non_incr::__rust_end_short_backtrace
  36:     0x7fe01631b6c3 - rustc_hir_typeck[429764d9bd7be61f]::typeck_with_inspect::{closure#0}
  37:     0x7fe0163162c6 - rustc_query_impl[d248f320eda2a0f9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d248f320eda2a0f9]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>>
  38:     0x7fe015889777 - rustc_query_system[636933bf47b8a8e3]::query::plumbing::try_execute_query::<rustc_query_impl[d248f320eda2a0f9]::DynamicConfig<rustc_data_structures[e91f46092e6bce0]::vec_cache::VecCache<rustc_span[1859fa485aa88c5d]::def_id::LocalDefId, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[636933bf47b8a8e3]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[d248f320eda2a0f9]::plumbing::QueryCtxt, false>
  39:     0x7fe015889109 - rustc_query_impl[d248f320eda2a0f9]::query_impl::typeck::get_query_non_incr::__rust_end_short_backtrace
  40:     0x7fe01588a5d7 - rustc_query_impl[d248f320eda2a0f9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d248f320eda2a0f9]::query_impl::used_trait_imports::dynamic_query::{closure#2}::{closure#0}, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>>
  41:     0x7fe015889777 - rustc_query_system[636933bf47b8a8e3]::query::plumbing::try_execute_query::<rustc_query_impl[d248f320eda2a0f9]::DynamicConfig<rustc_data_structures[e91f46092e6bce0]::vec_cache::VecCache<rustc_span[1859fa485aa88c5d]::def_id::LocalDefId, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[636933bf47b8a8e3]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[d248f320eda2a0f9]::plumbing::QueryCtxt, false>
  42:     0x7fe015889049 - rustc_query_impl[d248f320eda2a0f9]::query_impl::used_trait_imports::get_query_non_incr::__rust_end_short_backtrace
  43:     0x7fe015888abd - rustc_hir_analysis[95d84e02a3e62ea1]::check_unused::check_unused_traits
  44:     0x7fe0158889a9 - rustc_query_impl[d248f320eda2a0f9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d248f320eda2a0f9]::query_impl::check_unused_traits::dynamic_query::{closure#2}::{closure#0}, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 0usize]>>
  45:     0x7fe0166917e6 - rustc_query_system[636933bf47b8a8e3]::query::plumbing::try_execute_query::<rustc_query_impl[d248f320eda2a0f9]::DynamicConfig<rustc_query_system[636933bf47b8a8e3]::query::caches::SingleCache<rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[d248f320eda2a0f9]::plumbing::QueryCtxt, false>
  46:     0x7fe0166914c2 - rustc_query_impl[d248f320eda2a0f9]::query_impl::check_unused_traits::get_query_non_incr::__rust_end_short_backtrace
  47:     0x7fe0160fc86f - rustc_hir_analysis[95d84e02a3e62ea1]::check_crate
  48:     0x7fe01655f770 - rustc_interface[5c2f13e94b4905f7]::passes::analysis
  49:     0x7fe01655f433 - rustc_query_impl[d248f320eda2a0f9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[d248f320eda2a0f9]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 0usize]>>
  50:     0x7fe0166917e6 - rustc_query_system[636933bf47b8a8e3]::query::plumbing::try_execute_query::<rustc_query_impl[d248f320eda2a0f9]::DynamicConfig<rustc_query_system[636933bf47b8a8e3]::query::caches::SingleCache<rustc_middle[48f5e10766353194]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[d248f320eda2a0f9]::plumbing::QueryCtxt, false>
  51:     0x7fe01669143c - rustc_query_impl[d248f320eda2a0f9]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  52:     0x7fe0168d83c3 - <rustc_interface[5c2f13e94b4905f7]::passes::create_and_enter_global_ctxt<core[38695eb0a3e4dc55]::option::Option<rustc_interface[5c2f13e94b4905f7]::queries::Linker>, rustc_driver_impl[ff76f056f877a8d6]::run_compiler::{closure#0}::{closure#2}>::{closure#2} as core[38695eb0a3e4dc55]::ops::function::FnOnce<(&rustc_session[e86e12dfad9d04f]::session::Session, rustc_middle[48f5e10766353194]::ty::context::CurrentGcx, alloc[f328c0b594c54d96]::sync::Arc<rustc_data_structures[e91f46092e6bce0]::jobserver::Proxy>, &std[2b52140d45a5d53]::sync::once_lock::OnceLock<rustc_middle[48f5e10766353194]::ty::context::GlobalCtxt>, &rustc_data_structures[e91f46092e6bce0]::sync::worker_local::WorkerLocal<rustc_middle[48f5e10766353194]::arena::Arena>, &rustc_data_structures[e91f46092e6bce0]::sync::worker_local::WorkerLocal<rustc_hir[9e147bcb7655fc56]::Arena>, rustc_driver_impl[ff76f056f877a8d6]::run_compiler::{closure#0}::{closure#2})>>::call_once::{shim:vtable#0}
  53:     0x7fe0167a7b29 - rustc_interface[5c2f13e94b4905f7]::interface::run_compiler::<(), rustc_driver_impl[ff76f056f877a8d6]::run_compiler::{closure#0}>::{closure#1}
  54:     0x7fe01673ad87 - std[2b52140d45a5d53]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[5c2f13e94b4905f7]::util::run_in_thread_with_globals<rustc_interface[5c2f13e94b4905f7]::util::run_in_thread_pool_with_globals<rustc_interface[5c2f13e94b4905f7]::interface::run_compiler<(), rustc_driver_impl[ff76f056f877a8d6]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  55:     0x7fe01673aa68 - <<std[2b52140d45a5d53]::thread::Builder>::spawn_unchecked_<rustc_interface[5c2f13e94b4905f7]::util::run_in_thread_with_globals<rustc_interface[5c2f13e94b4905f7]::util::run_in_thread_pool_with_globals<rustc_interface[5c2f13e94b4905f7]::interface::run_compiler<(), rustc_driver_impl[ff76f056f877a8d6]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[38695eb0a3e4dc55]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  56:     0x7fe016740bef - std::sys::thread::unix::Thread::new::thread_start::h91d6dca458fee5fb
  57:     0x7fe00fe969cb - <unknown>
  58:     0x7fe00ff1aa0c - <unknown>
  59:                0x0 - <unknown>

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

note: please make sure that you have updated to the latest nightly

note: rustc 1.93.0-nightly (2636cb4c1 2025-11-11) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z crate-attr=feature(min_generic_const_args) -Z crate-attr=feature(generic_const_exprs) -Z dump-mir-dir=dir

query stack during panic:
#0 [generics_of] computing generics of `Both::a::{constant#0}`
#1 [generics_of] computing generics of `Both::a::{constant#0}::{constant#0}`
#2 [explicit_predicates_of] computing explicit predicates of `Both::a::{constant#0}::{constant#0}`
#3 [predicates_of] computing predicates of `Both::a::{constant#0}::{constant#0}`
#4 [param_env] computing normalized predicates of `Both::a::{constant#0}::{constant#0}`
#5 [typeck] type-checking `Both::a::{constant#0}::{constant#0}`
#6 [used_trait_imports] finding used_trait_imports `Both::a::{constant#0}::{constant#0}`
#7 [check_unused_traits] checking unused trait imports in crate
#8 [analysis] running analysis passes on crate `mvce`
end of query stack
error[E0433]: failed to resolve: use of undeclared type `B`
 --> /tmp/icemaker_global_tempdir.pMUmmFc3ZGer/rustc_testrunner_tmpdir_reporting.aRsqC0nvtFAY/mvce.rs:2:12
  |
2 |     a: A<{ B::<1>::M }>,
  |            ^
  |            |
  |            use of undeclared type `B`
  |            help: a type parameter with a similar name exists: `T`

error: aborting due to 5 previous errors; 2 warnings emitted

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

@rustbot label +F-min_generic_const_args +F-generic_const_exprs

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.F-generic_const_exprs`#![feature(generic_const_exprs)]`F-min_generic_const_args`#![feature(min_generic_const_args)]`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.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions