Skip to content

Commit

Permalink
suppress JDK 17 deprecation warning in ModuleSerializationProxy
Browse files Browse the repository at this point in the history
a tiny sequel to scala#9752
  • Loading branch information
SethTisue committed Oct 12, 2021
1 parent 548c776 commit db9b07c
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions src/library/scala/runtime/ModuleSerializationProxy.scala
Expand Up @@ -15,17 +15,20 @@ package scala.runtime
import java.io.Serializable
import java.security.PrivilegedActionException
import java.security.PrivilegedExceptionAction
import scala.annotation.nowarn

private[runtime] object ModuleSerializationProxy {
private val instances = new ClassValueCompat[Object] {
override protected def computeValue(cls: Class[_]): Object = {
try {
java.security.AccessController.doPrivileged((() => cls.getField("MODULE$").get(null)): PrivilegedExceptionAction[Object])
} catch {
@deprecated("", "") // because AccessController is deprecated on JDK 17
def getModule(cls: Class[_]): Object =
java.security.AccessController.doPrivileged(
(() => cls.getField("MODULE$").get(null)): PrivilegedExceptionAction[Object])
override protected def computeValue(cls: Class[_]): Object =
try getModule(cls): @nowarn("cat=deprecation")
catch {
case e: PrivilegedActionException =>
rethrowRuntime(e.getCause)
}
}
}

private def rethrowRuntime(e: Throwable): Object = {
Expand Down

0 comments on commit db9b07c

Please sign in to comment.