Closed
Description
Code
pub struct GenericStruct<const N: usize, T> {
thing: T,
}
impl<T> GenericStruct<0, T> {
pub fn new(thing: T) -> GenericStruct<1, T> {
Self { thing }
}
}
Strangely enough, the following does not ICE:
pub struct GenericStruct<const M: usize, T>(T);
impl<T> GenericStruct<0, T> {
pub fn new(thing: T) -> GenericStruct<1, T> {
Self(thing)
}
}
Meta
rustc --version --verbose
:
rustc 1.76.0 (07dca489a 2024-02-04)
binary: rustc
commit-hash: 07dca489ac2d933c78d3c5158e3f43beefeb02ce
commit-date: 2024-02-04
host: x86_64-unknown-linux-gnu
release: 1.76.0
LLVM version: 17.0.6
Also occured on nightly
rustc 1.78.0-nightly (3cbb93223 2024-03-13)
binary: rustc
commit-hash: 3cbb93223f33024db464a4df27a13c7cce870173
commit-date: 2024-03-13
host: x86_64-unknown-linux-gnu
release: 1.78.0-nightly
LLVM version: 18.1.0
However, it appeared to not happen on rustc stable 1.75.0
Backtrace
thread 'rustc' panicked at compiler/rustc_middle/src/util/bug.rs:35:44:
Box<dyn Any>
stack backtrace:
0: 0x7e1af7d254bf - std::backtrace_rs::backtrace::libunwind::trace::hfaaeee8ba270e11c
at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5
1: 0x7e1af7d254bf - std::backtrace_rs::backtrace::trace_unsynchronized::h58fbd0c41b878d5c
at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x7e1af7d254bf - std::backtrace::Backtrace::create::h2dd0025dfc83640d
at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/backtrace.rs:331:13
3: 0x7e1af7d25400 - std::backtrace::Backtrace::force_capture::h14abbc1345dcc8ed
at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/backtrace.rs:312:9
4: 0x7e1af48f8d34 - std[643654c1cf6ed541]::panicking::update_hook::<alloc[2118d7c564138cf7]::boxed::Box<rustc_driver_impl[5dd99c5338b3138f]::install_ice_hook::{closure#0}>>::{closure#0}
5: 0x7e1af7d3fe60 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::haf92efa441d110c6
at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/alloc/src/boxed.rs:2034:9
6: 0x7e1af7d3fe60 - std::panicking::rust_panic_with_hook::h572774bd80531e18
at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/panicking.rs:783:13
7: 0x7e1af4924944 - std[643654c1cf6ed541]::panicking::begin_panic::<rustc_errors[226439dd6d590770]::ExplicitBug>::{closure#0}
8: 0x7e1af49213e6 - std[643654c1cf6ed541]::sys_common::backtrace::__rust_end_short_backtrace::<std[643654c1cf6ed541]::panicking::begin_panic<rustc_errors[226439dd6d590770]::ExplicitBug>::{closure#0}, !>
9: 0x7e1af491c8f6 - std[643654c1cf6ed541]::panicking::begin_panic::<rustc_errors[226439dd6d590770]::ExplicitBug>
10: 0x7e1af492dbf1 - <rustc_errors[226439dd6d590770]::diagnostic::BugAbort as rustc_errors[226439dd6d590770]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
11: 0x7e1af4dadfb1 - rustc_middle[86b082b6ae20a938]::util::bug::opt_span_bug_fmt::<rustc_span[3cee0bc3124cbc21]::span_encoding::Span>::{closure#0}
12: 0x7e1af4d9168a - rustc_middle[86b082b6ae20a938]::ty::context::tls::with_opt::<rustc_middle[86b082b6ae20a938]::util::bug::opt_span_bug_fmt<rustc_span[3cee0bc3124cbc21]::span_encoding::Span>::{closure#0}, !>::{closure#0}
13: 0x7e1af4d91508 - rustc_middle[86b082b6ae20a938]::ty::context::tls::with_context_opt::<rustc_middle[86b082b6ae20a938]::ty::context::tls::with_opt<rustc_middle[86b082b6ae20a938]::util::bug::opt_span_bug_fmt<rustc_span[3cee0bc3124cbc21]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
14: 0x7e1af35af4a0 - rustc_middle[86b082b6ae20a938]::util::bug::bug_fmt
15: 0x7e1af4da1532 - <rustc_middle[86b082b6ae20a938]::ty::generic_args::ArgFolder>::type_param_expected
16: 0x7e1af5c08517 - <rustc_middle[86b082b6ae20a938]::ty::generic_args::ArgFolder as rustc_type_ir[37f9c129366c5d39]::fold::TypeFolder<rustc_middle[86b082b6ae20a938]::ty::context::TyCtxt>>::fold_ty
17: 0x7e1af5c02e97 - <rustc_middle[86b082b6ae20a938]::ty::generic_args::ArgFolder as rustc_type_ir[37f9c129366c5d39]::fold::TypeFolder<rustc_middle[86b082b6ae20a938]::ty::context::TyCtxt>>::fold_ty
18: 0x7e1af696ea82 - <rustc_middle[86b082b6ae20a938]::ty::print::pretty::FmtPrinter as rustc_middle[86b082b6ae20a938]::ty::print::Printer>::print_def_path
19: 0x7e1af4d84e8d - <rustc_middle[86b082b6ae20a938]::ty::print::pretty::FmtPrinter as rustc_middle[86b082b6ae20a938]::ty::print::pretty::PrettyPrinter>::print_value_path
20: 0x7e1af4a4ee72 - <rustc_middle[86b082b6ae20a938]::ty::context::TyCtxt>::value_path_str_with_args::<rustc_span[3cee0bc3124cbc21]::def_id::DefId>
21: 0x7e1af4ab988a - <rustc_hir_typeck[6e7417b334b3074a]::fn_ctxt::FnCtxt>::emit_type_mismatch_suggestions
22: 0x7e1af4abe8fa - <rustc_hir_typeck[6e7417b334b3074a]::fn_ctxt::FnCtxt>::emit_coerce_suggestions
23: 0x7e1af61d0a36 - <rustc_hir_typeck[6e7417b334b3074a]::fn_ctxt::FnCtxt>::check_block_with_expected
24: 0x7e1af66eb5e2 - <rustc_hir_typeck[6e7417b334b3074a]::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
25: 0x7e1af635cc82 - rustc_hir_typeck[6e7417b334b3074a]::check::check_fn
26: 0x7e1af61a8200 - rustc_hir_typeck[6e7417b334b3074a]::typeck
27: 0x7e1af61a74e1 - rustc_query_impl[72e0720568441596]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[72e0720568441596]::query_impl::typeck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[86b082b6ae20a938]::query::erase::Erased<[u8; 8usize]>>
28: 0x7e1af6032ab0 - rustc_query_system[e51c9dbcb47ac10a]::query::plumbing::try_execute_query::<rustc_query_impl[72e0720568441596]::DynamicConfig<rustc_query_system[e51c9dbcb47ac10a]::query::caches::VecCache<rustc_span[3cee0bc3124cbc21]::def_id::LocalDefId, rustc_middle[86b082b6ae20a938]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[72e0720568441596]::plumbing::QueryCtxt, true>
29: 0x7e1af60d9d65 - rustc_query_impl[72e0720568441596]::query_impl::typeck::get_query_incr::__rust_end_short_backtrace
30: 0x7e1af60da05a - <rustc_middle[86b082b6ae20a938]::hir::map::Map>::par_body_owners::<rustc_interface[5852ce9831de6ee9]::passes::analysis::{closure#1}::{closure#0}>::{closure#0}
31: 0x7e1af60d6fc0 - rustc_interface[5852ce9831de6ee9]::passes::analysis
32: 0x7e1af60d64d1 - rustc_query_impl[72e0720568441596]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[72e0720568441596]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[86b082b6ae20a938]::query::erase::Erased<[u8; 1usize]>>
33: 0x7e1af6a1efa2 - rustc_query_system[e51c9dbcb47ac10a]::query::plumbing::try_execute_query::<rustc_query_impl[72e0720568441596]::DynamicConfig<rustc_query_system[e51c9dbcb47ac10a]::query::caches::SingleCache<rustc_middle[86b082b6ae20a938]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[72e0720568441596]::plumbing::QueryCtxt, true>
34: 0x7e1af6a1eba6 - rustc_query_impl[72e0720568441596]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
35: 0x7e1af66b8904 - rustc_interface[5852ce9831de6ee9]::interface::run_compiler::<core[7caf98a7402569f1]::result::Result<(), rustc_span[3cee0bc3124cbc21]::ErrorGuaranteed>, rustc_driver_impl[5dd99c5338b3138f]::run_compiler::{closure#0}>::{closure#0}
36: 0x7e1af6c2fb05 - 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>>
37: 0x7e1af6c2f932 - <<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}
38: 0x7e1af7d49505 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h77b8b116ff3c4255
at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/alloc/src/boxed.rs:2020:9
39: 0x7e1af7d49505 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h994160effdff6027
at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/alloc/src/boxed.rs:2020:9
40: 0x7e1af7d49505 - std::sys::pal::unix::thread::Thread::new::thread_start::h336eeebfb56643a3
at /rustc/3cbb93223f33024db464a4df27a13c7cce870173/library/std/src/sys/pal/unix/thread.rs:108:17
41: 0x7e1af18a955a - <unknown>
42: 0x7e1af1926a3c - <unknown>
43: 0x0 - <unknown>
rustc version: 1.78.0-nightly (3cbb93223 2024-03-13)
platform: x86_64-unknown-linux-gnu
query stack during panic:
#0 [typeck] type-checking `<impl at ice/src/main.rs:5:1: 5:28>::new`
#1 [analysis] running analysis passes on this crate
end of query stack
Metadata
Metadata
Assignees
Labels
Area: Suggestions generated by the compiler applied by `cargo fix`Category: This is a bug.Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Status: A Minimal Complete and Verifiable Example has been found for this issueRelevant to the compiler team, which will review and decide on the PR/issue.