diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2015-09-08 12:55:01 +1000 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2015-09-08 12:55:01 +1000 |
commit | 77a728eddc21d7d47828dab03d03afeafc081a81 (patch) | |
tree | 2b2456888150b5d188981fc440a791111cab493d /src/library | |
parent | 5af7f23c63ea13b5132abeb2abaff8b44f5f5f2a (diff) | |
parent | 5bd8ea0edffe7b725e5fa665a82a5795d5dafe8f (diff) | |
download | scala-77a728eddc21d7d47828dab03d03afeafc081a81.tar.gz scala-77a728eddc21d7d47828dab03d03afeafc081a81.tar.bz2 scala-77a728eddc21d7d47828dab03d03afeafc081a81.zip |
Merge pull request #4673 from puffnfresh/issue/6806
SI-6806 Add an @implicitAmbiguous annotation
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/annotation/implicitAmbiguous.scala | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/library/scala/annotation/implicitAmbiguous.scala b/src/library/scala/annotation/implicitAmbiguous.scala new file mode 100644 index 0000000000..46eab9ae8f --- /dev/null +++ b/src/library/scala/annotation/implicitAmbiguous.scala @@ -0,0 +1,34 @@ +package scala.annotation + +import scala.annotation.meta._ + +/** + * To customize the error message that's emitted when an implicit of type + * C[T1,..., TN] is found more than once, annotate the class C + * with @implicitAmbiguous. Assuming C has 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 {} |