From bf107cc457225615e59c9bb829e2ca7e7bf1e6bf Mon Sep 17 00:00:00 2001 From: Felix Bruckmeier Date: Thu, 28 Jul 2022 13:43:37 +0200 Subject: [PATCH] util-tunable: Scala 3 support --- build.sbt | 4 ++-- .../src/main/scala/com/twitter/util/tunable/TunableMap.scala | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/build.sbt b/build.sbt index ef572dfff7..8304448324 100644 --- a/build.sbt +++ b/build.sbt @@ -89,7 +89,7 @@ val defaultScalaSettings = Seq( ) val defaultScala3EnabledSettings = Seq( scalaVersion := _scalaVersion, - crossScalaVersions := _crossScalaVersions ++ Seq("3.0.2") + crossScalaVersions := _crossScalaVersions ++ Seq("3.2.2") ) // Our dependencies or compiler options may differ for both Scala 2 and 3. We branch here @@ -678,7 +678,7 @@ lazy val utilTunable = Project( id = "util-tunable", base = file("util-tunable") ).settings( - sharedSettings + sharedScala3EnabledSettings ).settings( name := "util-tunable", libraryDependencies ++= Seq( diff --git a/util-tunable/src/main/scala/com/twitter/util/tunable/TunableMap.scala b/util-tunable/src/main/scala/com/twitter/util/tunable/TunableMap.scala index 8ac4b9aaaa..845d685a51 100644 --- a/util-tunable/src/main/scala/com/twitter/util/tunable/TunableMap.scala +++ b/util-tunable/src/main/scala/com/twitter/util/tunable/TunableMap.scala @@ -5,6 +5,7 @@ import java.util.function.BiFunction import scala.annotation.varargs import scala.collection.mutable import scala.jdk.CollectionConverters._ +import scala.reflect.ClassTag /** * A Map that can be used to access [[Tunable]]s using [[TunableMap.Key]]s. @@ -133,7 +134,7 @@ object TunableMap { } object Key { - def apply[T](id: String)(implicit m: Manifest[T]): Key[T] = + def apply[T](id: String)(implicit m: ClassTag[T]): Key[T] = Key[T](id, m.runtimeClass.asInstanceOf[Class[T]]) } @@ -199,7 +200,7 @@ object TunableMap { * Put a [[Tunable]] with id `id` and value `value` into the [[TunableMap]]. If the [[Tunable]] * for that `id` already exists, update the value to `value`. */ - final def put[T](id: String, value: T)(implicit m: Manifest[T]): Key[T] = + final def put[T](id: String, value: T)(implicit m: ClassTag[T]): Key[T] = put[T](id, m.runtimeClass.asInstanceOf[Class[T]], value) /**