summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-01-27 16:53:36 +0000
committerPaul Phillips <paulp@improving.org>2010-01-27 16:53:36 +0000
commita7ad163b511af4875220149839dcd8bfa6f305bd (patch)
tree86d64595aaadb968762f955dbf78ec39763970b7
parent71a0d2773e6f11cbe4d2ae7bab9d29caa69196c6 (diff)
downloadscala-a7ad163b511af4875220149839dcd8bfa6f305bd.tar.gz
scala-a7ad163b511af4875220149839dcd8bfa6f305bd.tar.bz2
scala-a7ad163b511af4875220149839dcd8bfa6f305bd.zip
Fix for #2563. Review by mharrah.
-rw-r--r--src/compiler/scala/tools/nsc/EvalLoop.scala19
1 files changed, 9 insertions, 10 deletions
diff --git a/src/compiler/scala/tools/nsc/EvalLoop.scala b/src/compiler/scala/tools/nsc/EvalLoop.scala
index 46579801bc..388bcf8ccc 100644
--- a/src/compiler/scala/tools/nsc/EvalLoop.scala
+++ b/src/compiler/scala/tools/nsc/EvalLoop.scala
@@ -6,22 +6,21 @@
package scala.tools.nsc
-trait EvalLoop {
+import annotation.tailrec
+import java.io.EOFException
+trait EvalLoop {
def prompt: String
def loop(action: (String) => Unit) {
- Console.print(prompt)
- try {
- val line = Console.readLine
- if (line.length() > 0) {
+ @tailrec def inner() {
+ Console.print(prompt)
+ val line = try Console.readLine catch { case _: EOFException => null }
+ if (line != null && line != "") {
action(line)
- loop(action)
+ inner()
}
}
- catch {
- case _: java.io.EOFException => //nop
- }
+ inner()
}
-
}