Advertisement
Guest User

Untitled

a guest
Apr 28th, 2016
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. trait Eq[-A] {
  2. def eq(a: A, b: A): Boolean
  3. }
  4. object Eq {
  5. implicit object IntEq extends Eq[Int] {
  6. def eq(a: Int, b: Int) = a == b
  7. }
  8. }
  9.  
  10. trait Supertrait[+A]
  11. object Supertrait {
  12. implicit def Eq[A: Eq]: Eq[Supertrait[A]] = ???
  13. }
  14.  
  15. trait Subtrait[+A] extends Supertrait[A]
  16. object Subtrait {
  17. implicit def Eq[A: Eq]: Eq[Subtrait[A]] = ???
  18. }
  19.  
  20. def f[A](x: Subtrait[A])(implicit ev: Eq[Subtrait[A]]) = ???
  21.  
  22. f(new Subtrait[Int] {})
  23.  
  24. Error:(32, 4) ambiguous implicit values:
  25. both method Eq in object Supertrait of type [A](implicit evidence$1: Eq[A])ShuffleTest.Eq[Supertrait[A]]
  26. and method Eq in object Subtrait of type [A](implicit evidence$2: Eq[A])Eq[Subtrait[A]]
  27. match expected type Eq[Subtrait[Int]]
  28. f(new Subtrait[Int] {})
  29. ^
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement