summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Suereth <Joshua.Suereth@gmail.com>2012-08-30 05:07:49 -0700
committerJosh Suereth <Joshua.Suereth@gmail.com>2012-08-30 05:07:49 -0700
commitffe5f56eb500ed4dd856087864d8d3313eace931 (patch)
tree18a624bde9cdf7cfed470564ef7ef60dac7e8b65
parentf1b5332150ad37a99b61ba0ba5858bc75eb13c9e (diff)
parent32cb44f9136a03e762baba420c0be2f4c27f4354 (diff)
downloadscala-ffe5f56eb500ed4dd856087864d8d3313eace931.tar.gz
scala-ffe5f56eb500ed4dd856087864d8d3313eace931.tar.bz2
scala-ffe5f56eb500ed4dd856087864d8d3313eace931.zip
Merge pull request #1212 from dragos/topic/worksheet-instrumenter
Two fixes for the worksheet instrumenter
-rw-r--r--src/compiler/scala/tools/nsc/ast/parser/Parsers.scala9
-rw-r--r--src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala8
2 files changed, 12 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
index 17bea7f796..e79c92e162 100644
--- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
+++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala
@@ -1366,7 +1366,8 @@ self =>
}
parseDo
case FOR =>
- def parseFor = atPos(in.skipToken()) {
+ val start = in.skipToken()
+ def parseFor = atPos(start) {
val enums =
if (in.token == LBRACE) inBracesOrNil(enumerators())
else inParensOrNil(enumerators())
@@ -1378,7 +1379,11 @@ self =>
makeFor(enums, expr())
}
}
- parseFor
+ def adjustStart(tree: Tree) =
+ if (tree.pos.isRange && start < tree.pos.start)
+ tree setPos tree.pos.withStart(start)
+ else tree
+ adjustStart(parseFor)
case RETURN =>
def parseReturn =
atPos(in.skipToken()) {
diff --git a/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala b/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala
index efc393c812..2aed99657e 100644
--- a/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala
+++ b/src/compiler/scala/tools/nsc/interactive/ScratchPadMaker.scala
@@ -113,9 +113,11 @@ trait ScratchPadMaker { self: Global =>
val topLevel = objectName.isEmpty
if (topLevel) objectName = tree.symbol.fullName
body foreach traverseStat
- applyPendingPatches(skipped)
- if (topLevel)
- patches += Patch(skipped, epilogue)
+ if (skipped != 0) { // don't issue prologue and epilogue if there are no instrumented statements
+ applyPendingPatches(skipped)
+ if (topLevel)
+ patches += Patch(skipped, epilogue)
+ }
case _ =>
}