Skip to content

Instantly share code, notes, and snippets.

@puffnfresh
Created February 21, 2014 01:12
Show Gist options
  • Save puffnfresh/9126936 to your computer and use it in GitHub Desktop.
Save puffnfresh/9126936 to your computer and use it in GitHub Desktop.
Can't make ambiguous
trait Wat[T]
object Wat {
implicit object BooleanWat extends Wat[Boolean]
}
object Hello {
implicit object AmbBooleanWat1 extends Wat[Boolean]
implicit object AmbBooleanWat2 extends Wat[Boolean]
def main(args: Array[String]) {
implicitly[Wat[Boolean]] // finds BooleanWat
}
}
@pedrofurla
Copy link

How? And which one it's taking?

@pedrofurla
Copy link

trait Wat[T]
object Wat {
  implicit object BooleanWat extends Wat[Boolean] { override def toString:String = "In Wat "}
}

object Hello {
  implicit object AmbBooleanWat1 extends Wat[Boolean] { override def toString:String = "In Hello1 "}
  implicit object AmbBooleanWat2 extends Wat[Boolean] { override def toString:String = "In Hello2 "}

  def main(args: Array[String]) {
    println(implicitly[Wat[Boolean]]) // finds BooleanWat
  }
}

scala> Hello.main(null)
In Wat 

@puffnfresh
Copy link
Author

@pedrofurla back to being ambiguous in 2.11.0-M8.

🐐

@puffnfresh
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment