aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/DottyPredef.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/DottyPredef.scala')
-rw-r--r--src/dotty/DottyPredef.scala30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/dotty/DottyPredef.scala b/src/dotty/DottyPredef.scala
index 7c8098bd1..0a5d4d7f3 100644
--- a/src/dotty/DottyPredef.scala
+++ b/src/dotty/DottyPredef.scala
@@ -4,22 +4,34 @@ import scala.reflect.ClassTag
import scala.reflect.runtime.universe.TypeTag
import scala.Predef.??? // this is currently ineffective, because of #530
-object DottyPredef {
- /** implicits for ClassTag and TypeTag. Should be implemented with macros */
+abstract class I1 {
implicit def classTag[T]: ClassTag[T] = scala.Predef.???
implicit def typeTag[T]: TypeTag[T] = scala.Predef.???
-
-
- /** ClassTags for final classes */
+ implicit val DoubleClassTag: ClassTag[Double] = ClassTag.Double
+}
+abstract class I2 extends I1 {
+ implicit val FloatClassTag: ClassTag[Double] = ClassTag.Double
+}
+abstract class I3 extends I2 {
+ implicit val LongClassTag: ClassTag[Long] = ClassTag.Long
+}
+abstract class I4 extends I3 {
implicit val IntClassTag: ClassTag[Int] = ClassTag.Int
- implicit val ByteClassTag: ClassTag[Byte] = ClassTag.Byte
+}
+abstract class I5 extends I4 {
implicit val ShortClassTag: ClassTag[Short] = ClassTag.Short
+}
+abstract class I6 extends I5 {
+ implicit val ByteClassTag: ClassTag[Byte] = ClassTag.Byte
implicit val CharClassTag: ClassTag[Char] = ClassTag.Char
- implicit val LongClassTag: ClassTag[Long] = ClassTag.Long
- implicit val FloatClassTag: ClassTag[Float] = ClassTag.Float
- implicit val DoubleClassTag: ClassTag[Double] = ClassTag.Double
implicit val BooleanClassTag: ClassTag[Boolean] = ClassTag.Boolean
implicit val UnitClassTag: ClassTag[Unit] = ClassTag.Unit
implicit val NullClassTag: ClassTag[Null] = ClassTag.Null
+}
+
+/** implicits for ClassTag and TypeTag. Should be implemented with macros */
+object DottyPredef extends I6 {
+
+ /** ClassTags for final classes */
implicit val NothingClassTag: ClassTag[Nothing] = ClassTag.Nothing
}