diff options
author | Paul Phillips <paulp@improving.org> | 2010-01-27 16:53:36 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-01-27 16:53:36 +0000 |
commit | a7ad163b511af4875220149839dcd8bfa6f305bd (patch) | |
tree | 86d64595aaadb968762f955dbf78ec39763970b7 /src/compiler/scala/tools/nsc/EvalLoop.scala | |
parent | 71a0d2773e6f11cbe4d2ae7bab9d29caa69196c6 (diff) | |
download | scala-a7ad163b511af4875220149839dcd8bfa6f305bd.tar.gz scala-a7ad163b511af4875220149839dcd8bfa6f305bd.tar.bz2 scala-a7ad163b511af4875220149839dcd8bfa6f305bd.zip |
Fix for #2563. Review by mharrah.
Diffstat (limited to 'src/compiler/scala/tools/nsc/EvalLoop.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/EvalLoop.scala | 19 |
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() } - } |