// revisions: classic coherence next //[next] compile-flags: -Znext-solver //[coherence] compile-flags: -Znext-solver=coherence //[classic] check-pass //[classic] known-bug: #105782 // 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 Default for T { default type Id = T; } trait Overlap { type Assoc; } impl Overlap for u32 { type Assoc = usize; } impl Overlap for ::Id { //[coherence]~^ ERROR conflicting implementations of trait `Overlap` for type `u32` //[next]~^^ ERROR conflicting implementations of trait `Overlap` for type `u32` type Assoc = Box; } fn main() {}