summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2013-10-18 11:12:42 -0700
committerSom Snytt <som.snytt@gmail.com>2013-10-18 11:12:42 -0700
commit2bfe0e797c2b9c57277475c9296e36cbf868b7db (patch)
tree35355b21eecdd99ca63e518b60e53a2c0b664b80
parent371bad2fe657d7fd065a47dc38fa5ae1fea882a7 (diff)
downloadscala-2bfe0e797c2b9c57277475c9296e36cbf868b7db.tar.gz
scala-2bfe0e797c2b9c57277475c9296e36cbf868b7db.tar.bz2
scala-2bfe0e797c2b9c57277475c9296e36cbf868b7db.zip
SI-6026 REPL checks for javap before tools.jar
If javap is already available, don't go hunting for tools.jar This avoids the getResource bug in AbstractFileClassLoader.
-rw-r--r--src/compiler/scala/tools/nsc/interpreter/ILoop.scala28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/compiler/scala/tools/nsc/interpreter/ILoop.scala b/src/compiler/scala/tools/nsc/interpreter/ILoop.scala
index 6aef72a3b8..ee45dc558a 100644
--- a/src/compiler/scala/tools/nsc/interpreter/ILoop.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/ILoop.scala
@@ -394,20 +394,24 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter)
(install map (_.parent) flatMap jarAt) orElse
(jdkDir flatMap deeply)
}
- private def addToolsJarToLoader() = {
- val cl = platformTools match {
- case Some(tools) => ScalaClassLoader.fromURLs(Seq(tools.toURL), intp.classLoader)
- case _ => intp.classLoader
- }
- if (Javap.isAvailable(cl)) {
- repldbg(":javap available.")
- cl
- }
- else {
- repldbg(":javap unavailable: no tools.jar at " + jdkHome)
+ private def addToolsJarToLoader() = (
+ if (Javap isAvailable intp.classLoader) {
+ repldbg(":javap available on interpreter class path.")
intp.classLoader
+ } else {
+ val cl = platformTools match {
+ case Some(tools) => ScalaClassLoader.fromURLs(Seq(tools.toURL), intp.classLoader)
+ case _ => intp.classLoader
+ }
+ if (Javap isAvailable cl) {
+ repldbg(":javap available on extended class path.")
+ cl
+ } else {
+ repldbg(s":javap unavailable: no tools.jar at $jdkHome")
+ intp.classLoader
+ }
}
- }
+ )
protected def newJavap() = new JavapClass(addToolsJarToLoader(), new IMain.ReplStrippingWriter(intp)) {
override def tryClass(path: String): Array[Byte] = {