summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/runtime/JavaMirrors.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-11-03 09:20:09 -0700
committerPaul Phillips <paulp@improving.org>2012-11-09 16:44:53 -0700
commit2a1d0202f1b7f59f6312263b7a80ea750657296d (patch)
treeaa8954fc21cb91e739737cf79d7ce94d517d5f87 /src/reflect/scala/reflect/runtime/JavaMirrors.scala
parent4e325dafae514312633bc0a0f2c0ed47e3113d80 (diff)
downloadscala-2a1d0202f1b7f59f6312263b7a80ea750657296d.tar.gz
scala-2a1d0202f1b7f59f6312263b7a80ea750657296d.tar.bz2
scala-2a1d0202f1b7f59f6312263b7a80ea750657296d.zip
Hardened JavaMirrors against linkage errors.
After running into a ClassCircularityError and following it back to this, I simplified the method to route all linkage errors the same way. And added logging.
Diffstat (limited to 'src/reflect/scala/reflect/runtime/JavaMirrors.scala')
-rw-r--r--src/reflect/scala/reflect/runtime/JavaMirrors.scala11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/reflect/scala/reflect/runtime/JavaMirrors.scala b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
index 0cfb3fd623..44fbd55162 100644
--- a/src/reflect/scala/reflect/runtime/JavaMirrors.scala
+++ b/src/reflect/scala/reflect/runtime/JavaMirrors.scala
@@ -496,13 +496,10 @@ private[reflect] trait JavaMirrors extends internal.SymbolTable with api.JavaUni
Class.forName(path, true, classLoader)
/** Does `path` correspond to a Java class with that fully qualified name in the current class loader? */
- def tryJavaClass(path: String): Option[jClass[_]] =
- try {
- Some(javaClass(path))
- } catch {
- case (_: ClassNotFoundException) | (_: NoClassDefFoundError) | (_: IncompatibleClassChangeError) =>
- None
- }
+ def tryJavaClass(path: String): Option[jClass[_]] = (
+ try Some(javaClass(path))
+ catch { case ex @ (_: LinkageError | _: ClassNotFoundException) => None } // TODO - log
+ )
/** The mirror that corresponds to the classloader that original defined the given Java class */
def mirrorDefining(jclazz: jClass[_]): JavaMirror = {