Skip to content

rustdoc:ICE with field that has a conditional Send impl. #60726

Closed
@rodrimati1992

Description

@rodrimati1992

Edited:
Please look at this comment for a self-contained example that reproduces the ICE.


In the process of finishing the 0.3 release of abi_stable,I got this ICE:

 Documenting abi_stable v0.2.3 (/home/matias/Documents/eclipse_workspace/abi_stable_workspace/abi_stable)
thread 'rustc' panicked at 'Unable to fulfill trait DefId(2/0:850 ~ core[3726]::marker[0]::Send[0]) for 'std_types::map::iterator_stuff::IntoIter<K, V>': [FulfillmentError(Obligation(predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [std_types::map::iterator_stuff::ValIterInterface<u32, u32>], item_def_id: DefId(0/0:4989 ~ abi_stable[8787]::erased_types[0]::traits[0]::InterfaceType[0]::Send[0]) }, core_extensions::type_level_bool::True)),depth=2),MismatchedProjectionTypes(Sorts(ExpectedFound { expected: core_extensions::type_level_bool::False, found: core_extensions::type_level_bool::True })))]', src/librustc/traits/auto_trait.rs:208:17
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.

error: internal compiler error: unexpected panic

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

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.34.0 (91856ed52 2019-04-10) running on i686-unknown-linux-gnu

Trying it out again in nightly (rustc 1.36.0-nightly (d595b11 2019-05-10) running on i686-unknown-linux-gnu) ,I got:

 Documenting abi_stable v0.3.0 (/home/matias/Documents/eclipse_workspace/abi_stable_workspace/abi_stable)
thread 'rustc' panicked at 'Unable to fulfill trait DefId(2:1386 ~ core[4c06]::marker[0]::Send[0]) for 'std_types::map::iterator_stuff::IntoIter<K, V>': [FulfillmentError(Obligation(predicate=Binder(ProjectionPredicate(ProjectionTy { substs: [std_types::map::iterator_stuff::ValIterInterface<u32, u32>], item_def_id: DefId(0:7003 ~ abi_stable[8787]::erased_types[0]::traits[0]::InterfaceType[0]::Send[0]) }, core_extensions::type_level_bool::True)),depth=2),MismatchedProjectionTypes(Sorts(ExpectedFound { expected: core_extensions::type_level_bool::False, found: core_extensions::type_level_bool::True })))]', src/librustc/traits/auto_trait.rs:202:17
stack backtrace:
   0: 0xb5cded4c - std::sys::unix::backtrace::tracing::imp::unwind_backtrace::h88d972f6f6e46c24
                       at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
   1: 0xb5cd70fb - std::sys_common::backtrace::_print::h83aca1574431bbad
                       at src/libstd/sys_common/backtrace.rs:71
   2: 0xb5cdb1aa - std::panicking::default_hook::{{closure}}::h54e8f04261c4c0b1
                       at src/libstd/sys_common/backtrace.rs:59
                       at src/libstd/panicking.rs:197
   3: 0xb5cdaef4 - std::panicking::default_hook::h66422ac1b55ce676
                       at src/libstd/panicking.rs:211
   4: 0xb5db9c38 - proc_macro::bridge::client::<impl proc_macro::bridge::Bridge>::enter::{{closure}}::{{closure}}::h581fccc42b4d0f71
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/boxed.rs:718
                       at src/libproc_macro/bridge/client.rs:304
   5: 0xb5cdb9f6 - std::panicking::rust_panic_with_hook::hbf2738690e9f5989
                       at src/libstd/panicking.rs:478
   6: 0xb5cdb476 - std::panicking::continue_panic_fmt::hcbef7b43feb6b8d9
                       at src/libstd/panicking.rs:381
   7: 0xb5cdb3b9 - std::panicking::begin_panic_fmt::hfafa0a0090d76a4e
                       at src/libstd/panicking.rs:336
   8:   0x63531f - rustc::traits::auto_trait::AutoTraitFinder::find_auto_trait_generics::{{closure}}::{{closure}}::h3076052a80a2b2be
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e//<::std::macros::panic macros>:8
   9:   0x634d23 - rustc::ty::context::tls::with_context::{{closure}}::h68c2c2610d54ace6
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/result.rs:766
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/traits/auto_trait.rs:201
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/infer/mod.rs:529
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1726
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1966
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1899
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1965
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1725
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2071
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2055
  10:   0x6338d2 - rustc::ty::context::GlobalCtxt::enter_local::h90af253d10758aa1
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2045
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2055
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:2067
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1717
  11:   0x6553f8 - rustc::traits::auto_trait::AutoTraitFinder::find_auto_trait_generics::h42ee2645b594cb59
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/infer/mod.rs:528
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/traits/auto_trait.rs:119
  12:   0x4c5725 - core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut::h25ad1904ab0b7bc3
                       at src/librustdoc/clean/auto_trait.rs:50
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/ops/function.rs:269
  13:   0x73a13a - <core::iter::adapters::chain::Chain<A,B> as core::iter::traits::iterator::Iterator>::try_fold::hb3e3d5b042f42891
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1572
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/chain.rs:88
  14:   0x54dcb1 - <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter::ha8605cbc824c8642
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1609
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:812
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1809
  15:   0x718bdd - rustdoc::clean::get_auto_trait_and_blanket_impls::h6b2119eea5d33f2b
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1721
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1465
                       at src/librustdoc/clean/auto_trait.rs:33
                       at src/librustdoc/clean/mod.rs:3787
  16:   0x7545b6 - <rustdoc::passes::collect_trait_impls::SyntheticImplCollector as rustdoc::fold::DocFolder>::fold_item::h01bd6abc37807d9a
                       at src/librustdoc/passes/collect_trait_impls.rs:158
  17:   0x54a448 - <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter::hf3f69d672ddf9615
                       at src/librustdoc/fold.rs:100
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1572
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1609
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:812
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1929
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1821
  18:   0x75109e - rustdoc::fold::DocFolder::fold_inner_recur::h3b90485174c31fb1
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1721
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1465
                       at src/librustdoc/fold.rs:100
                       at src/librustdoc/fold.rs:27
  19:   0x7548ad - <rustdoc::passes::collect_trait_impls::SyntheticImplCollector as rustdoc::fold::DocFolder>::fold_item::h01bd6abc37807d9a
                       at src/librustdoc/fold.rs:90
                       at src/librustdoc/passes/collect_trait_impls.rs:166
  20:   0x54a448 - <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter::hf3f69d672ddf9615
                       at src/librustdoc/fold.rs:100
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1572
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1609
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:812
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1929
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1821
  21:   0x75109e - rustdoc::fold::DocFolder::fold_inner_recur::h3b90485174c31fb1
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1721
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1465
                       at src/librustdoc/fold.rs:100
                       at src/librustdoc/fold.rs:27
  22:   0x7548ad - <rustdoc::passes::collect_trait_impls::SyntheticImplCollector as rustdoc::fold::DocFolder>::fold_item::h01bd6abc37807d9a
                       at src/librustdoc/fold.rs:90
                       at src/librustdoc/passes/collect_trait_impls.rs:166
  23:   0x54a448 - <alloc::vec::Vec<T> as alloc::vec::SpecExtend<T,I>>::from_iter::hf3f69d672ddf9615
                       at src/librustdoc/fold.rs:100
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1572
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1609
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/adapters/mod.rs:812
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1929
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1826
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1821
  24:   0x75109e - rustdoc::fold::DocFolder::fold_inner_recur::h3b90485174c31fb1
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/vec.rs:1721
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/iter/traits/iterator.rs:1465
                       at src/librustdoc/fold.rs:100
                       at src/librustdoc/fold.rs:27
  25:   0x7548ad - <rustdoc::passes::collect_trait_impls::SyntheticImplCollector as rustdoc::fold::DocFolder>::fold_item::h01bd6abc37807d9a
                       at src/librustdoc/fold.rs:90
                       at src/librustdoc/passes/collect_trait_impls.rs:166
  26:   0x751f8d - rustdoc::passes::collect_trait_impls::collect_trait_impls::h7ddbb0578e71ca0e
                       at src/librustdoc/fold.rs:105
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/option.rs:624
                       at src/librustdoc/fold.rs:105
                       at src/librustdoc/passes/collect_trait_impls.rs:17
  27:   0x653622 - rustc::ty::context::tls::enter_global::h0352a121287a69cf
                       at src/librustdoc/core.rs:465
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/passes.rs:807
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1999
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1966
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1899
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1965
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1998
  28:   0x6841d6 - rustc_interface::passes::BoxedGlobalCtxt::access::{{closure}}::h37af13ddc5734fca
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/passes.rs:807
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e//<::rustc_data_structures::box_region::declare_box_region_type macros>:17
  29: 0xb7c04368 - rustc_interface::passes::create_global_ctxt::{{closure}}::ha0f95b1f2df7a5e5
  30:   0x68524a - rustc_interface::interface::run_compiler_in_existing_thread_pool::hb0e8f2e4ea5e07c3
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/boxed.rs:910
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_data_structures/box_region.rs:52
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e//<::rustc_data_structures::box_region::declare_box_region_type macros>:19
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/passes.rs:807
                       at src/librustdoc/core.rs:354
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/interface.rs:122
  31:   0x7923f7 - rustdoc::core::run_core::h828402703fcc17cc
                       at src/librustdoc/core.rs:340
  32:   0x636b2e - <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h7b9fd07b2b1ea2c8
                       at src/librustdoc/lib.rs:450
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panic.rs:309
  33:   0x57b815 - std::panicking::try::do_call::hb936f360df81fcbb
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panicking.rs:293
  34: 0xb5ceb447 - __rust_maybe_catch_panic
                       at src/libpanic_unwind/lib.rs:85
  35:   0x7582cc - rustc_driver::report_ices_to_stderr_if_any::h7f9579b20d11e238
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panicking.rs:272
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panic.rs:388
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_driver/lib.rs:1114
  36:   0x509438 - rustdoc::main_args::ha7dd5c6ee7b5b640
                       at src/librustdoc/lib.rs:447
                       at src/librustdoc/lib.rs:404
  37:   0x733dda - std::thread::local::LocalKey<T>::with::ha9c7da692a148e8b
                       at src/librustdoc/lib.rs:98
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/option.rs:416
                       at src/librustdoc/lib.rs:98
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:186
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1954
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/local.rs:299
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/local.rs:245
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1946
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/local.rs:299
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/local.rs:245
  38:   0x688c42 - std::sys_common::backtrace::__rust_begin_short_backtrace::ha4de48f9125e55bb
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc/ty/context.rs:1938
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:186
                       at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:182
                       at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libsyntax/lib.rs:101
                       at /cargo/registry/src/github.com-1ecc6299db9ec823/scoped-tls-1.0.0/src/lib.rs:137
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libsyntax/lib.rs:100
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:181
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/librustc_interface/util.rs:159
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/sys_common/backtrace.rs:136
  39:   0x57b980 - std::panicking::try::do_call::hcb704b420ba15158
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/mod.rs:469
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panic.rs:309
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panicking.rs:293
  40: 0xb5ceb447 - __rust_maybe_catch_panic
                       at src/libpanic_unwind/lib.rs:85
  41:   0x75ff8b - core::ops::function::FnOnce::call_once{{vtable.shim}}::h71980ce26ab01d54
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panicking.rs:272
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/panic.rs:388
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libstd/thread/mod.rs:468
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/libcore/ops/function.rs:231
  42: 0xb5cbe208 - <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h2e642aeea9c9581f
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/boxed.rs:704
  43: 0xb5ce9e50 - std::sys::unix::thread::Thread::new::thread_start::ha576c140cc0cd745
                       at /rustc/d595b113584f8f446957469951fd5d31adc2a44e/src/liballoc/boxed.rs:704
                       at src/libstd/sys_common/thread.rs:13
                       at src/libstd/sys/unix/thread.rs:79
  44: 0xb5c37294 - start_thread
  45: 0xb5b440ad - __clone
  46:        0x0 - <unknown>

error: internal compiler error: unexpected panic

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

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.36.0-nightly (d595b1135 2019-05-10) running on i686-unknown-linux-gnu

For the abi_stable::std_types::map::IntoIter type,with this type definition:

#[repr(transparent)]
pub struct IntoIter<K,V>{
    iter:DynTrait<'static,RBox<()>,ValIterInterface<u32,u32>>,
    _marker:PhantomData<Tuple2<K,V>>,
}

It compiles if I add a PhantomData<Rc<()>> field to IntoIter.

Context

The Send impl of DynTrait:

impl<'borr, P, I> Send for DynTrait<'borr, P, I> where
    P: Send,
    I: InterfaceBound<'borr, Send = True>, 
{}

Definition of InterfaceBound
Definition of InterfaceType
The InterfaceType impl of ValIterInterface:

crate::impl_InterfaceType!{
    impl<K,V> crate::InterfaceType for ValIterInterface<K,V> {
        type Send=False;
        type Sync=False;
        type Iterator=True;
    }
}

The impl_InterfaceType macro just sets the unmentioned associated types to False.

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-rustdocRelevant to the rustdoc 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