diff options
Diffstat (limited to 'src/repl/scala/tools/nsc/interpreter/ILoop.scala')
-rw-r--r-- | src/repl/scala/tools/nsc/interpreter/ILoop.scala | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/src/repl/scala/tools/nsc/interpreter/ILoop.scala b/src/repl/scala/tools/nsc/interpreter/ILoop.scala index adac438b37..56d62f3efc 100644 --- a/src/repl/scala/tools/nsc/interpreter/ILoop.scala +++ b/src/repl/scala/tools/nsc/interpreter/ILoop.scala @@ -12,18 +12,17 @@ import Predef.{ println => _, _ } import interpreter.session._ import StdReplTags._ import scala.tools.asm.ClassReader -import scala.util.Properties.{ jdkHome, javaVersion, versionString, javaVmName } -import scala.tools.nsc.util.{ ClassPath, Exceptional, stringFromWriter, stringFromStream } +import scala.util.Properties.jdkHome +import scala.tools.nsc.util.{ ClassPath, stringFromStream } import scala.reflect.classTag import scala.reflect.internal.util.{ BatchSourceFile, ScalaClassLoader } import ScalaClassLoader._ -import scala.reflect.io.{ File, Directory } +import scala.reflect.io.File import scala.tools.util._ import io.AbstractFile -import scala.collection.generic.Clearable -import scala.concurrent.{ ExecutionContext, Await, Future, future } +import scala.concurrent.{ ExecutionContext, Await, Future } import ExecutionContext.Implicits._ -import java.io.{ BufferedReader, FileReader, StringReader } +import java.io.BufferedReader import scala.util.{ Try, Success, Failure } @@ -266,8 +265,7 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter) } } - protected def newJavap() = - JavapClass(addToolsJarToLoader(), new IMain.ReplStrippingWriter(intp), Some(intp)) + protected def newJavap() = JavapClass(addToolsJarToLoader(), new IMain.ReplStrippingWriter(intp), intp) private lazy val javap = substituteAndLog[Javap]("javap", NoJavap)(newJavap()) @@ -306,7 +304,7 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter) if (javap == null) s":javap unavailable, no tools.jar at $jdkHome. Set JDK_HOME." else if (line == "") - ":javap [-lcsvp] [path1 path2 ...]" + Javap.helpText else javap(words(line)) foreach { res => if (res.isError) return s"Failed: ${res.value}" @@ -544,7 +542,6 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter) case i => val n = s.take(i).toInt ; (n, s.drop(i+1).toInt - n) } } - import scala.collection.JavaConverters._ val index = (start - 1) max 0 val text = history.asStrings(index, index + len) mkString "\n" edit(text) @@ -636,10 +633,10 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter) } } def alreadyDefined(clsName: String) = intp.classLoader.tryToLoadClass(clsName).isDefined - val exists = entries.filter(_.hasExtension("class")).map(classNameOf).exists(alreadyDefined) + val existingClass = entries.filter(_.hasExtension("class")).map(classNameOf).find(alreadyDefined) if (!f.exists) echo(s"The path '$f' doesn't seem to exist.") - else if (exists) echo(s"The path '$f' cannot be loaded, because existing classpath entries conflict.") // TODO tell me which one + else if (existingClass.nonEmpty) echo(s"The path '$f' cannot be loaded, it contains a classfile that already exists on the classpath: ${existingClass.get}") else { addedClasspath = ClassPath.join(addedClasspath, f.path) intp.addUrlsToClassPath(f.toURI.toURL) @@ -860,12 +857,7 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter) } def mkReader(maker: ReaderMaker) = maker { () => - settings.completion.value match { - case _ if settings.noCompletion => NoCompletion - case "none" => NoCompletion - case "adhoc" => new JLineCompletion(intp) // JLineCompletion is a misnomer; it's not tied to jline - case "pc" | _ => new PresentationCompilerCompleter(intp) - } + if (settings.noCompletion) NoCompletion else new PresentationCompilerCompleter(intp) } def internalClass(kind: String) = s"scala.tools.nsc.interpreter.$kind.InteractiveReader" @@ -912,7 +904,7 @@ class ILoop(in0: Option[BufferedReader], protected val out: JPrintWriter) // sets in to some kind of reader depending on environmental cues in = in0.fold(chooseReader(settings))(r => SimpleReader(r, out, interactive = true)) - globalFuture = future { + globalFuture = Future { intp.initializeSynchronous() loopPostInit() !intp.reporter.hasErrors |