25 lines
592 B
Rust
25 lines
592 B
Rust
|
//@ check-pass
|
||
|
//@ revisions: current next
|
||
|
//@ ignore-compare-mode-next-solver (explicit revisions)
|
||
|
//@[next] compile-flags: -Znext-solver
|
||
|
|
||
|
// Tests that rebasing from the concrete impl to the default impl also processes the
|
||
|
// `[u32; 0]: IntoIterator<Item = ?U>` predicate to constrain the `?U` impl arg.
|
||
|
|
||
|
#![feature(specialization)]
|
||
|
//~^ WARN the feature `specialization` is incomplete
|
||
|
|
||
|
trait Spec {
|
||
|
type Assoc;
|
||
|
}
|
||
|
|
||
|
default impl<T, U> Spec for T where T: IntoIterator<Item = U> {
|
||
|
type Assoc = U;
|
||
|
}
|
||
|
|
||
|
impl<T> Spec for [T; 0] {}
|
||
|
|
||
|
fn main() {
|
||
|
let x: <[u32; 0] as Spec>::Assoc = 1;
|
||
|
}
|