blob: 0a5d4d7f3492d0c9589bbc4c7bd9fc142915a61b (
plain) (
tree)
|
|
package dotty
import scala.reflect.ClassTag
import scala.reflect.runtime.universe.TypeTag
import scala.Predef.??? // this is currently ineffective, because of #530
abstract class I1 {
implicit def classTag[T]: ClassTag[T] = scala.Predef.???
implicit def typeTag[T]: TypeTag[T] = scala.Predef.???
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
}
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 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
}
|