//@ revisions: current next //@ ignore-compare-mode-next-solver (explicit revisions) //@[next] compile-flags: -Znext-solver //@[next] check-pass //@[current] known-bug: unknown //@[current] failure-status: 101 //@[current] dont-check-compiler-stderr // Tests that rebasing from the concrete impl to the default impl also processes the // `[u32; 0]: IntoIterator` predicate to constrain the `?U` impl arg. // This test also makes sure that we don't do anything weird when rebasing the args // is ambiguous. #![feature(specialization)] //[next]~^ WARN the feature `specialization` is incomplete trait Spec { type Assoc; } default impl Spec for T where T: IntoIterator { type Assoc = U; } impl Spec for [T; 0] {} fn main() { let x: <[_; 0] as Spec>::Assoc = 1; }