Closed
Description
Code
pub trait Trait1 {
type C;
}
struct T1;
impl Trait1 for T1 {
type C = usize;
}
pub trait Callback<T: Trait1>: FnMut(<T as Trait1>::C) {}
impl<T: Trait1, F: FnMut(<T as Trait1>::C)> Callback<T> for F { }
pub struct State<T: Trait1> {
callback: Option<Box<dyn Callback<T>>>,
}
impl<T: Trait1> State<T> {
fn new() -> Self { Self { callback: None } }
fn test_cb(&mut self, d: <T as Trait1>::C) {
(self.callback.as_mut().unwrap())(d)
}
}
fn main() {
let mut s = State::<T1>::new();
s.test_cb(1);
}
Meta
rustc --version --verbose
:
rustc 1.42.0 (b8cedc004 2020-03-09)
binary: rustc
commit-hash: b8cedc00407a4c56a3bda1ed605c6fc166655447
commit-date: 2020-03-09
host: x86_64-apple-darwin
release: 1.42.0
LLVM version: 9.0
Error output
error: internal compiler error: src/librustc_trait_selection/traits/codegen/mod.rs:107: Encountered errors `[FulfillmentError(Obligation(predicate=Binder(TraitPredicate(<dyn Callback<T1, Output = ()> as std::ops::FnMut<(usize,)>>)), depth=1),Unimplemented)]` resolving bounds after type-checking
thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:880:9
note: run with `RUST_BACKTRACE=1` environment variable to display a 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.44.0-nightly (537ccdf3a 2020-04-02) running on x86_64-apple-darwin
note: compiler flags: -C debuginfo=2 -C incremental --crate-type bin
note: some of the compiler flags provided by cargo are hidden
Backtrace
thread 'rustc' panicked at 'Box<Any>', src/librustc_errors/lib.rs:873:9
stack backtrace:
0: <unknown>
1: <unknown>
2: <unknown>
3: <unknown>
4: <unknown>
5: <unknown>
6: <unknown>
7: <unknown>
8: <unknown>
9: <unknown>
10: <unknown>
...
query stack during panic:
#0 [codegen_fulfill_obligation] checking if `std::ops::FnMut` fulfills its obligations
#1 [collect_and_partition_mono_items] collect_and_partition_mono_items
end of query stack
the backtrace itself is all <unknown>
Metadata
Metadata
Assignees
Labels
Area: Trait systemCategory: 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) ❄️Helping to "clean up" bugs with minimal examples and bisectionsMedium priorityRelevant to the compiler team, which will review and decide on the PR/issue.ICE tracked in rust-lang/glacier.