Closed
Description
Code
pub trait Callback { fn cb(); }
pub trait Processing {
type Call:Callback;
}
fn f<P:Processing+?Sized>() {
P::Call::cb();
}
fn main() {
struct MyCall;
f::<dyn Processing<Call=MyCall>>();
}
Meta
rustc --version --verbose
:
rustc 1.45.2 (d3fb005a3 2020-07-31)
binary: rustc
commit-hash: d3fb005a39e62501b8b0b356166e515ae24e2e54
commit-date: 2020-07-31
host: x86_64-apple-darwin
release: 1.45.2
LLVM version: 10.0
Error output
rustc src/main.rs
error: internal compiler error: src/librustc_trait_selection/traits/codegen/mod.rs:62: Encountered error `Unimplemented` selecting `Binder(<main::MyCall as Callback>)` during codegen
Backtrace
thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:907:9
stack backtrace:
0: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
1: core::fmt::write
2: std::io::Write::write_fmt
3: std::panicking::default_hook::{{closure}}
4: std::panicking::default_hook
5: rustc_driver::report_ice
6: std::panicking::rust_panic_with_hook
7: std::panicking::begin_panic
8: rustc_errors::HandlerInner::bug
9: rustc_errors::Handler::bug
10: rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}
11: rustc_middle::ty::context::tls::with_opt::{{closure}}
12: rustc_middle::ty::context::tls::with_opt
13: rustc_middle::util::bug::opt_span_bug_fmt
14: rustc_middle::util::bug::bug_fmt
15: rustc_middle::ty::context::GlobalCtxt::enter_local
16: rustc_trait_selection::traits::codegen::codegen_fulfill_obligation
17: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::codegen_fulfill_obligation>::compute
18: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
19: rustc_data_structures::stack::ensure_sufficient_stack
20: rustc_query_system::query::plumbing::get_query_impl
21: rustc_ty::instance::resolve_instance
22: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::resolve_instance>::compute
23: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
24: rustc_data_structures::stack::ensure_sufficient_stack
25: rustc_query_system::query::plumbing::get_query_impl
26: rustc_middle::ty::instance::Instance::resolve
27: <rustc_mir::monomorphize::collector::MirNeighborCollector as rustc_middle::mir::visit::Visitor>::visit_terminator_kind
28: rustc_mir::monomorphize::collector::collect_neighbours
29: rustc_mir::monomorphize::collector::collect_items_rec
30: rustc_mir::monomorphize::collector::collect_items_rec
31: rustc_mir::monomorphize::collector::collect_crate_mono_items
32: rustc_mir::monomorphize::partitioning::collect_and_partition_mono_items
33: rustc_middle::ty::query::<impl rustc_query_system::query::config::QueryAccessors<rustc_middle::ty::context::TyCtxt> for rustc_middle::ty::query::queries::collect_and_partition_mono_items>::compute
34: rustc_query_system::dep_graph::graph::DepGraph<K>::with_task_impl
35: rustc_data_structures::stack::ensure_sufficient_stack
36: rustc_query_system::query::plumbing::get_query_impl
37: rustc_codegen_ssa::base::codegen_crate
38: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
39: rustc_interface::passes::start_codegen
40: rustc_middle::ty::context::tls::enter_global
41: rustc_interface::queries::Queries::ongoing_codegen
42: rustc_interface::interface::run_compiler_in_existing_thread_pool
43: rustc_ast::attr::with_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
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.45.2 (d3fb005a3 2020-07-31) running on x86_64-apple-darwin
query stack during panic:
#0 [codegen_fulfill_obligation] checking if `Callback` fulfills its obligations
#1 [resolve_instance] resolving instance `<main::MyCall as Callback>::cb`
#2 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
error: aborting due to previous error
Metadata
Metadata
Assignees
Labels
Category: This is a bug.Call for participation: An issue has been fixed and does not reproduce, but no test has been added.Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Medium priorityRelevant to the compiler team, which will review and decide on the PR/issue.ICE tracked in rust-lang/glacier.