32 lines
616 B
Rust
32 lines
616 B
Rust
//@ revisions: current next
|
|
//@[next] compile-flags: -Znext-solver
|
|
|
|
// Should fail. Default items completely drop candidates instead of ambiguity,
|
|
// which is unsound during coherence, since coherence requires completeness.
|
|
|
|
#![feature(specialization)]
|
|
#![allow(incomplete_features)]
|
|
|
|
trait Default {
|
|
type Id;
|
|
}
|
|
|
|
impl<T> Default for T {
|
|
default type Id = T;
|
|
}
|
|
|
|
trait Overlap {
|
|
type Assoc;
|
|
}
|
|
|
|
impl Overlap for u32 {
|
|
type Assoc = usize;
|
|
}
|
|
|
|
impl Overlap for <u32 as Default>::Id {
|
|
//~^ ERROR conflicting implementations of trait `Overlap` for type `u32`
|
|
type Assoc = Box<usize>;
|
|
}
|
|
|
|
fn main() {}
|