summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2012-09-25 09:25:59 +0200
committerMartin Odersky <odersky@gmail.com>2012-09-25 09:25:59 +0200
commit092eac75a25dc09734c940adb962d62eebfeeaa0 (patch)
treeacdd29a9fe113ac065b0107d917aab88e7c613cd /src
parent6ba05fdf09e8ff81dda1b946d9f89b2bba9ad33b (diff)
downloadscala-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
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala13
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 _ =>
}