From 7c7c267d4e1efa2c85017751b448b31cf7e2a5b1 Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Wed, 12 May 2010 23:37:48 +0000 Subject: Fixed a long standing issue with interpreter co... Fixed a long standing issue with interpreter commands containing more than a single statement. It was the classic "reversing a list and then flattening it is not the same as flattening and then reversing it." Closes #3116, no review. --- src/compiler/scala/tools/nsc/Interpreter.scala | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compiler/scala/tools/nsc/Interpreter.scala b/src/compiler/scala/tools/nsc/Interpreter.scala index 749ee7bce9..70d416e19e 100644 --- a/src/compiler/scala/tools/nsc/Interpreter.scala +++ b/src/compiler/scala/tools/nsc/Interpreter.scala @@ -236,6 +236,7 @@ class Interpreter(val settings: Settings, out: PrintWriter) { private val usedNameMap = new HashMap[Name, Request]() private val boundNameMap = new HashMap[Name, Request]() private def allHandlers = prevRequests.toList flatMap (_.handlers) + private def allReqAndHandlers = prevRequests.toList flatMap (req => req.handlers map (req -> _)) def printAllTypeOf = { prevRequests foreach { req => @@ -418,10 +419,7 @@ class Interpreter(val settings: Settings, out: PrintWriter) { } /** Flatten the handlers out and pair each with the original request */ - val rhpairs = prevRequests.reverse.toList flatMap { req => - req.handlers map (ReqAndHandler(req, _)) - } - select(rhpairs, wanted).reverse + select(allReqAndHandlers map { case (r, h) => ReqAndHandler(r, h) }, wanted) } val code, trailingBraces, accessPath = new StringBuffer @@ -682,7 +680,7 @@ class Interpreter(val settings: Settings, out: PrintWriter) { def extraCodeToEvaluate(req: Request, code: PrintWriter) { } def resultExtractionCode(req: Request, code: PrintWriter) { } - override def toString = "%s(usedNames = %s)".format(this.getClass, usedNames) + override def toString = "%s(used = %s)".format(this.getClass.toString split '.' last, usedNames) } private class GenericHandler(member: Tree) extends MemberHandler(member) @@ -985,6 +983,8 @@ class Interpreter(val settings: Settings, out: PrintWriter) { } } } + + override def toString = "Request(line=%s, %s trees)".format(line, trees.size) } /** A container class for methods to be injected into the repl -- cgit v1.2.3