From bc31c5b22864b6294b1045a7de404c1db48e69af Mon Sep 17 00:00:00 2001 From: Jorge Ortiz Date: Wed, 24 Mar 2010 15:58:07 -0700 Subject: [PATCH] Seal coercible (for safety), make it not subclass Function1 (to prevent accidentally putting implicit conversions in scope) --- src/main/scala/scalaj/collection/j2s/Implicits.scala | 4 +++- src/main/scala/scalaj/collection/s2j/Implicits.scala | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/scala/scalaj/collection/j2s/Implicits.scala b/src/main/scala/scalaj/collection/j2s/Implicits.scala index adbd9cf..e629e36 100644 --- a/src/main/scala/scalaj/collection/j2s/Implicits.scala +++ b/src/main/scala/scalaj/collection/j2s/Implicits.scala @@ -20,7 +20,9 @@ trait Implicits { implicit def RichJDictionary[A, B](underlying: ju.Dictionary[A, B]): RichDictionary[A, B] = new RichDictionary(underlying) } -trait Coercible[A, B] extends (A => B) +sealed trait Coercible[-A, +B] { + def apply(x: A): B +} object Coercible extends LowPriorityCoercible { private[collection] def coerce[M[_], A, B](m: M[A])(implicit c: Coercible[A, B]): M[B] = m.asInstanceOf[M[B]] diff --git a/src/main/scala/scalaj/collection/s2j/Implicits.scala b/src/main/scala/scalaj/collection/s2j/Implicits.scala index 0d23134..6b9f8e2 100644 --- a/src/main/scala/scalaj/collection/s2j/Implicits.scala +++ b/src/main/scala/scalaj/collection/s2j/Implicits.scala @@ -22,7 +22,9 @@ trait Implicits { implicit def RichSMutableMap[A, B](underlying: scm.Map[A, B]): RichMutableMap[A, B] = new RichMutableMap(underlying) } -trait Coercible[A, B] extends (A => B) +sealed trait Coercible[-A, +B] { + def apply(x: A): B +} object Coercible extends LowPriorityCoercible { private[collection] def coerce[M[_], A, B](m: M[A])(implicit c: Coercible[A, B]): M[B] = m.asInstanceOf[M[B]]