scala.annotation.implicitAmbiguous.scala Maven / Gradle / Ivy
package scala.annotation
/**
* To customize the error message that's emitted when an implicit search finds
* multiple ambiguous values, annotate at least one of the implicit values
* `@implicitAmbiguous`. Assuming the implicit value is a method with type
* parameters `X1,..., XN`, the error message will be the result of replacing
* all occurrences of `${Xi}` in the string `msg` with the string representation
* of the corresponding type argument `Ti`.
*
* If more than one `@implicitAmbiguous` annotation is collected, the compiler is
* free to pick any of them to display.
*
* Nice errors can direct users to fix imports or even tell them why code
* intentionally doesn't compile.
*
* {{{
* trait =!=[C, D]
*
* implicit def neq[E, F] : E =!= F = null
*
* @annotation.implicitAmbiguous("Could not prove ${J} =!= ${J}")
* implicit def neqAmbig1[G, H, J] : J =!= J = null
* implicit def neqAmbig2[I] : I =!= I = null
*
* implicitly[Int =!= Int]
* }}}
*
* @author Brian McKenna
* @since 2.12.0
*/
final class implicitAmbiguous(msg: String) extends scala.annotation.StaticAnnotation
© 2015 - 2025 Weber Informatics LLC | Privacy Policy