Repository navigation
Compiler Error while trying to prototype a workaround for const methods in traits #116599
Copy link
Copy link
Closed
Closed
Copy link
Labels
C-bugCategory: This is a bug.Category: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.Call for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
Code
pub trait EvaluateConstMethods {
type Trait: TraitWithConstMethods;
/// **This block breaks**
const DATA_3: Data3 = {
<<<Self::Trait as TraitWithConstMethods>::Method2 as ConstFn<_, _>>::Body<
<<Self::Trait as TraitWithConstMethods>::Method1 as ConstFn<_, _>>::Body<ContainsData1>,
> as Contains<_>>::ITEM
};
}
pub trait TraitWithConstMethods {
/// "const trait method" of signature `fn(Data1) -> Data2`
type Method1: ConstFn<Data1, Data2>;
/// "const trait method" of signature `fn(Data2) -> Data3`
type Method2: ConstFn<Data2, Data3>;
}
/// A trait which tries to implement const methods in traits
pub trait ConstFn<Arg, Ret> {
type Body<T: Contains<Arg>>: Contains<Ret>;
}
/// A ZST which represents / "contains" a const value which can be pass to a [`ConstFn`]
pub trait Contains<T> {
const ITEM: T;
}
pub struct ContainsData1;
impl Contains<Data1> for ContainsData1 {
const ITEM: Data1 = Data1 {};
}
// Arbitrary data
pub struct Data1 {}
pub struct Data2 {}
pub struct Data3 {}Meta
rustc --version --verbose:
rustc 1.73.0 (cc66ad468 2023-10-03)
binary: rustc
commit-hash: cc66ad468955717ab92600c770da8c1601a4ff33
commit-date: 2023-10-03
host: x86_64-unknown-linux-gnu
release: 1.73.0
LLVM version: 17.0.2
Also reproduced on the rust playground
Error output
error: internal compiler error: /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/compiler/rustc_infer/src/infer/nll_relate/mod.rs:483:21: unexpected inference var _
[...]
query stack during panic:
#0 [mir_borrowck] borrow-checking `EvaluateConstMethods::DATA_3`
#1 [analysis] running analysis passes on this crate
end of query stack
Backtrace
error: internal compiler error: /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/compiler/rustc_infer/src/infer/nll_relate/mod.rs:483:21: unexpected inference var _
thread 'rustc' panicked at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/compiler/rustc_errors/src/lib.rs:1635:9:
Box<dyn Any>
stack backtrace:
0: 0x7f15ecee749c - std::backtrace_rs::backtrace::libunwind::trace::he43a6a3949163f8c
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x7f15ecee749c - std::backtrace_rs::backtrace::trace_unsynchronized::h50db52ca99f692e7
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x7f15ecee749c - std::sys_common::backtrace::_print_fmt::hd37d595f2ceb2d3c
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:67:5
3: 0x7f15ecee749c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h678bbcf9da6d7d75
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:44:22
4: 0x7f15ecf4d3fc - core::fmt::rt::Argument::fmt::h3a159adc080a6fc9
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/rt.rs:138:9
5: 0x7f15ecf4d3fc - core::fmt::write::hb8eaf5a8e45a738e
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/core/src/fmt/mod.rs:1094:21
6: 0x7f15eceda12e - std::io::Write::write_fmt::h9663fe36b2ee08f9
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/io/mod.rs:1714:15
7: 0x7f15ecee7284 - std::sys_common::backtrace::_print::hcd4834796ee88ad2
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:47:5
8: 0x7f15ecee7284 - std::sys_common::backtrace::print::h1360e9450e4f922a
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys_common/backtrace.rs:34:9
9: 0x7f15eceea193 - std::panicking::default_hook::{{closure}}::h2609fa95cd5ab1f4
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:270:22
10: 0x7f15ecee9eac - std::panicking::default_hook::h6d75f5747cab6e8d
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:290:9
11: 0x7f15ebd30a3e - <alloc[98253621d83cbf53]::boxed::Box<rustc_driver_impl[566d207f92c3d9d2]::install_ice_hook::{closure#0}> as core[d28c4e8d9c4eebaa]::ops::function::Fn<(&dyn for<'a, 'b> core[d28c4e8d9c4eebaa]::ops::function::Fn<(&'a core[d28c4e8d9c4eebaa]::panic::panic_info::PanicInfo<'b>,), Output = ()> + core[d28c4e8d9c4eebaa]::marker::Sync + core[d28c4e8d9c4eebaa]::marker::Send, &core[d28c4e8d9c4eebaa]::panic::panic_info::PanicInfo)>>::call
12: 0x7f15eceea9be - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h05249de742e1768e
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/alloc/src/boxed.rs:2021:9
13: 0x7f15eceea9be - std::panicking::rust_panic_with_hook::h57e78470c47c84de
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/panicking.rs:711:13
14: 0x7f15ec281521 - std[3759e478f3a6c4f2]::panicking::begin_panic::<rustc_errors[f3962fbeb8edb247]::ExplicitBug>::{closure#0}
15: 0x7f15ec27d206 - std[3759e478f3a6c4f2]::sys_common::backtrace::__rust_end_short_backtrace::<std[3759e478f3a6c4f2]::panicking::begin_panic<rustc_errors[f3962fbeb8edb247]::ExplicitBug>::{closure#0}, !>
16: 0x7f15ec2476c6 - std[3759e478f3a6c4f2]::panicking::begin_panic::<rustc_errors[f3962fbeb8edb247]::ExplicitBug>
17: 0x7f15ec254134 - <rustc_errors[f3962fbeb8edb247]::HandlerInner>::bug::<alloc[98253621d83cbf53]::string::String>
18: 0x7f15ec253fc6 - <rustc_errors[f3962fbeb8edb247]::Handler>::bug::<alloc[98253621d83cbf53]::string::String>
19: 0x7f15ec2fb5ac - rustc_middle[5935fdd60c99b3fe]::util::bug::opt_span_bug_fmt::<rustc_span[4c9f011e8b033119]::span_encoding::Span>::{closure#0}
20: 0x7f15ec2f9c5a - rustc_middle[5935fdd60c99b3fe]::ty::context::tls::with_opt::<rustc_middle[5935fdd60c99b3fe]::util::bug::opt_span_bug_fmt<rustc_span[4c9f011e8b033119]::span_encoding::Span>::{closure#0}, !>::{closure#0}
21: 0x7f15ec2f9c28 - rustc_middle[5935fdd60c99b3fe]::ty::context::tls::with_context_opt::<rustc_middle[5935fdd60c99b3fe]::ty::context::tls::with_opt<rustc_middle[5935fdd60c99b3fe]::util::bug::opt_span_bug_fmt<rustc_span[4c9f011e8b033119]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !>
22: 0x7f15ea5fd1b0 - rustc_middle[5935fdd60c99b3fe]::util::bug::bug_fmt
23: 0x7f15eab04dd0 - <rustc_infer[2448fd35ed713fff]::infer::InferCtxt>::instantiate_nll_query_response_and_region_obligations::<()>
24: 0x7f15eaab5755 - <rustc_middle[5935fdd60c99b3fe]::ty::ParamEnvAnd<rustc_middle[5935fdd60c99b3fe]::traits::query::type_op::AscribeUserType> as rustc_trait_selection[48b7f7e13fbddf35]::traits::query::type_op::TypeOp>::fully_perform
25: 0x7f15eaab4f2a - <rustc_borrowck[29a4cdfbf3f92543]::type_check::TypeChecker>::ascribe_user_type
26: 0x7f15eaab1b16 - rustc_borrowck[29a4cdfbf3f92543]::type_check::type_check
27: 0x7f15eaa9ae2b - rustc_borrowck[29a4cdfbf3f92543]::nll::compute_regions
28: 0x7f15eaa82cff - rustc_borrowck[29a4cdfbf3f92543]::do_mir_borrowck
29: 0x7f15eaa81055 - rustc_borrowck[29a4cdfbf3f92543]::mir_borrowck
30: 0x7f15e9e53aae - rustc_query_impl[778daaabc67f3fff]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[778daaabc67f3fff]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[5935fdd60c99b3fe]::query::erase::Erased<[u8; 8usize]>>
31: 0x7f15e9e53a7e - <rustc_query_impl[778daaabc67f3fff]::query_impl::mir_borrowck::dynamic_query::{closure#2} as core[d28c4e8d9c4eebaa]::ops::function::FnOnce<(rustc_middle[5935fdd60c99b3fe]::ty::context::TyCtxt, rustc_span[4c9f011e8b033119]::def_id::LocalDefId)>>::call_once
32: 0x7f15ea3b71bf - rustc_query_system[e0e328d29a6e1c80]::query::plumbing::try_execute_query::<rustc_query_impl[778daaabc67f3fff]::DynamicConfig<rustc_query_system[e0e328d29a6e1c80]::query::caches::VecCache<rustc_span[4c9f011e8b033119]::def_id::LocalDefId, rustc_middle[5935fdd60c99b3fe]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[778daaabc67f3fff]::plumbing::QueryCtxt, true>
33: 0x7f15eb6a4dfe - rustc_query_impl[778daaabc67f3fff]::query_impl::mir_borrowck::get_query_incr::__rust_end_short_backtrace
34: 0x7f15eaeef031 - rustc_data_structures[29929b1a5d4d6700]::sync::par_for_each_in::<&[rustc_span[4c9f011e8b033119]::def_id::LocalDefId], <rustc_middle[5935fdd60c99b3fe]::hir::map::Map>::par_body_owners<rustc_interface[5bdd18de9f5858d8]::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
35: 0x7f15eaeeed4d - <rustc_session[f1e1083633086c54]::session::Session>::time::<(), rustc_interface[5bdd18de9f5858d8]::passes::analysis::{closure#1}>
36: 0x7f15eaeee4be - rustc_interface[5bdd18de9f5858d8]::passes::analysis
37: 0x7f15eb23670a - rustc_query_impl[778daaabc67f3fff]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[778daaabc67f3fff]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[5935fdd60c99b3fe]::query::erase::Erased<[u8; 1usize]>>
38: 0x7f15eb2366f9 - <rustc_query_impl[778daaabc67f3fff]::query_impl::analysis::dynamic_query::{closure#2} as core[d28c4e8d9c4eebaa]::ops::function::FnOnce<(rustc_middle[5935fdd60c99b3fe]::ty::context::TyCtxt, ())>>::call_once
39: 0x7f15eb51d898 - rustc_query_system[e0e328d29a6e1c80]::query::plumbing::try_execute_query::<rustc_query_impl[778daaabc67f3fff]::DynamicConfig<rustc_query_system[e0e328d29a6e1c80]::query::caches::SingleCache<rustc_middle[5935fdd60c99b3fe]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[778daaabc67f3fff]::plumbing::QueryCtxt, true>
40: 0x7f15eb51d3f4 - rustc_query_impl[778daaabc67f3fff]::query_impl::analysis::get_query_incr::__rust_end_short_backtrace
41: 0x7f15eafe2973 - <rustc_interface[5bdd18de9f5858d8]::queries::QueryResult<&rustc_middle[5935fdd60c99b3fe]::ty::context::GlobalCtxt>>::enter::<core[d28c4e8d9c4eebaa]::result::Result<(), rustc_span[4c9f011e8b033119]::ErrorGuaranteed>, rustc_driver_impl[566d207f92c3d9d2]::run_compiler::{closure#1}::{closure#2}::{closure#6}>
42: 0x7f15eafe194a - <rustc_interface[5bdd18de9f5858d8]::interface::Compiler>::enter::<rustc_driver_impl[566d207f92c3d9d2]::run_compiler::{closure#1}::{closure#2}, core[d28c4e8d9c4eebaa]::result::Result<core[d28c4e8d9c4eebaa]::option::Option<rustc_interface[5bdd18de9f5858d8]::queries::Linker>, rustc_span[4c9f011e8b033119]::ErrorGuaranteed>>
43: 0x7f15eafdec68 - std[3759e478f3a6c4f2]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[5bdd18de9f5858d8]::util::run_in_thread_pool_with_globals<rustc_interface[5bdd18de9f5858d8]::interface::run_compiler<core[d28c4e8d9c4eebaa]::result::Result<(), rustc_span[4c9f011e8b033119]::ErrorGuaranteed>, rustc_driver_impl[566d207f92c3d9d2]::run_compiler::{closure#1}>::{closure#0}, core[d28c4e8d9c4eebaa]::result::Result<(), rustc_span[4c9f011e8b033119]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[d28c4e8d9c4eebaa]::result::Result<(), rustc_span[4c9f011e8b033119]::ErrorGuaranteed>>
44: 0x7f15eafde3ee - <<std[3759e478f3a6c4f2]::thread::Builder>::spawn_unchecked_<rustc_interface[5bdd18de9f5858d8]::util::run_in_thread_pool_with_globals<rustc_interface[5bdd18de9f5858d8]::interface::run_compiler<core[d28c4e8d9c4eebaa]::result::Result<(), rustc_span[4c9f011e8b033119]::ErrorGuaranteed>, rustc_driver_impl[566d207f92c3d9d2]::run_compiler::{closure#1}>::{closure#0}, core[d28c4e8d9c4eebaa]::result::Result<(), rustc_span[4c9f011e8b033119]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[d28c4e8d9c4eebaa]::result::Result<(), rustc_span[4c9f011e8b033119]::ErrorGuaranteed>>::{closure#1} as core[d28c4e8d9c4eebaa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
45: 0x7f15ecef5295 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::haadd4e5af2ab0d62
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/alloc/src/boxed.rs:2007:9
46: 0x7f15ecef5295 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::he4ba1fb09c16d807
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/alloc/src/boxed.rs:2007:9
47: 0x7f15ecef5295 - std::sys::unix::thread::Thread::new::thread_start::he524ecf4b47bee95
at /rustc/cc66ad468955717ab92600c770da8c1601a4ff33/library/std/src/sys/unix/thread.rs:108:17
48: 0x7f15e8aaa9eb - <unknown>
49: 0x7f15e8b2e7cc - <unknown>
50: 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: rustc 1.73.0 (cc66ad468 2023-10-03) running on x86_64-unknown-linux-gnu
note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C incremental=[REDACTED]
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [mir_borrowck] borrow-checking `EvaluateConstMethods::DATA_3`
#1 [analysis] running analysis passes on this crate
end of query stack
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
C-bugCategory: This is a bug.Category: This is a bug.E-needs-testCall for participation: An issue has been fixed and does not reproduce, but no test has been added.Call for participation: An issue has been fixed and does not reproduce, but no test has been added.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Activity
matthiaskrgr commentedon Oct 10, 2023
Regression in nightly-2023-03-10
fetching (via local git) commits from 900c354 to 39f2657
opening existing repository at "rust.git"
Found origin remote under name
originrefreshing repository at "rust.git"
looking up first commit
looking up second commit
checking that commits are by bors and thus have ci artifacts...
finding bors merge commits
found 4 bors merge commits in the specified range
commit[0] 2023-03-08: Auto merge of #108665 - weihanglo:update-cargo, r=weihanglo
commit[1] 2023-03-08: Auto merge of #108919 - matthiaskrgr:rollup-g271pm2, r=matthiaskrgr
commit[2] 2023-03-09: Auto merge of #108178 - cjgillot:ssa-deref, r=oli-obk
commit[3] 2023-03-09: Auto merge of #108920 - matthiaskrgr:rollup-qrr9a0u, r=matthiaskrgr
ERROR: no CI builds available between 900c354 and 39f2657 within last 167 days
matthiaskrgr commentedon Jan 17, 2024
This compiles now
maybe #120019 ? dunno
add test for rust-lang#116599
Rollup merge of rust-lang#122988 - matthiaskrgr:icetests, r=petrochenkov
Unrolled build for rust-lang#122988