diff options
author | Martin Odersky <odersky@gmail.com> | 2012-09-25 09:25:59 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2012-09-25 09:25:59 +0200 |
commit | 092eac75a25dc09734c940adb962d62eebfeeaa0 (patch) | |
tree | acdd29a9fe113ac065b0107d917aab88e7c613cd | |
parent | 6ba05fdf09e8ff81dda1b946d9f89b2bba9ad33b (diff) | |
download | scala-092eac75a25dc09734c940adb962d62eebfeeaa0.tar.gz scala-092eac75a25dc09734c940adb962d62eebfeeaa0.tar.bz2 scala-092eac75a25dc09734c940adb962d62eebfeeaa0.zip |
Fixed instrumentation code so that it can deal with:
1. leading imports: object sheet { import math; … }
2. trailing objects: object sheet { … } object other { … }
Review by @dragos
-rw-r--r-- | src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala b/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala index dfbbb6ff88..7d332d9f7f 100644 --- a/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala +++ b/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala @@ -35,7 +35,7 @@ trait ScratchPadMaker { self: Global => private def literal(str: String) = "\"\"\""+str+"\"\"\"" - private val prologue = "import scala.runtime.WorksheetSupport._; def main(args: Array[String])=$execute{" + private val prologue = ";import scala.runtime.WorksheetSupport._; def main(args: Array[String])=$execute{" private val epilogue = "}" @@ -117,12 +117,13 @@ trait ScratchPadMaker { self: Global => super.traverse(tree) case ModuleDef(_, name, Template(_, _, body)) => val topLevel = objectName.isEmpty - if (topLevel) objectName = tree.symbol.fullName - body foreach traverseStat - if (skipped != 0) { // don't issue prologue and epilogue if there are no instrumented statements - applyPendingPatches(skipped) - if (topLevel) + if (topLevel) { + objectName = tree.symbol.fullName + body foreach traverseStat + if (skipped != 0) { // don't issue prologue and epilogue if there are no instrumented statements + applyPendingPatches(skipped) patches += Patch(skipped, epilogue) + } } case _ => } |