diff options
Diffstat (limited to 'src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs')
-rw-r--r-- | src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs b/src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs new file mode 100644 index 000000000..93a4bc5fe --- /dev/null +++ b/src/test/ui/coherence/coherence-blanket-conflicts-with-blanket-implemented.rs @@ -0,0 +1,30 @@ +use std::fmt::Debug; +use std::default::Default; + +// Test that two blanket impls conflict (at least without negative +// bounds). After all, some other crate could implement Even or Odd +// for the same type (though this crate doesn't). + +trait MyTrait { + fn get(&self) -> usize; +} + +trait Even { } + +trait Odd { } + +impl Even for isize { } + +impl Odd for usize { } + +impl<T:Even> MyTrait for T { + fn get(&self) -> usize { 0 } +} + +impl<T:Odd> MyTrait for T { +//~^ ERROR E0119 + + fn get(&self) -> usize { 0 } +} + +fn main() { } |