aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/tasty/PositionPickler.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-10-13 09:39:44 +0200
committerMartin Odersky <odersky@gmail.com>2016-10-15 19:33:51 +0200
commit2575d11bd1a670ace8bd7e91777ea135759af51f (patch)
tree57d705b50023fecc44247b6ace8ddf9f7865f336 /src/dotty/tools/dotc/core/tasty/PositionPickler.scala
parent8bfaadaae141e83db7f515b042fcee26ed0e54fd (diff)
downloaddotty-2575d11bd1a670ace8bd7e91777ea135759af51f.tar.gz
dotty-2575d11bd1a670ace8bd7e91777ea135759af51f.tar.bz2
dotty-2575d11bd1a670ace8bd7e91777ea135759af51f.zip
Preserve all positions in Tasty.
The goal is that pickled and unpickled trees should print the same with -Yprintpos. There are several reasons why this is not the case so far. Some of them are fixed in this commit.
Diffstat (limited to 'src/dotty/tools/dotc/core/tasty/PositionPickler.scala')
-rw-r--r--src/dotty/tools/dotc/core/tasty/PositionPickler.scala18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/dotty/tools/dotc/core/tasty/PositionPickler.scala b/src/dotty/tools/dotc/core/tasty/PositionPickler.scala
index 63bb00a71..65e9d12be 100644
--- a/src/dotty/tools/dotc/core/tasty/PositionPickler.scala
+++ b/src/dotty/tools/dotc/core/tasty/PositionPickler.scala
@@ -37,23 +37,27 @@ class PositionPickler(pickler: TastyPickler, addrOfTree: tpd.Tree => Option[Addr
lastIndex = index
lastPos = pos
}
- def traverse(x: Any, parentPos: Position): Unit = x match {
+ def traverse(x: Any): Unit = x match {
case x: Tree @unchecked =>
- if (x.pos.exists && x.pos.toSynthetic != parentPos.toSynthetic) {
+ if (x.pos.exists /*&& x.pos.toSynthetic != x.initialPos.toSynthetic*/) {
addrOfTree(x) match {
- case Some(addr) => pickleDeltas(addr.index, x.pos)
+ case Some(addr) =>
+ //println(i"pickling $x")
+ pickleDeltas(addr.index, x.pos)
case _ =>
+ //println(i"no address for $x")
}
}
+ //else println(i"skipping $x")
x match {
- case x: MemberDef @unchecked => traverse(x.symbol.annotations, x.pos)
+ case x: MemberDef @unchecked => traverse(x.symbol.annotations)
case _ =>
}
- traverse(x.productIterator, x.pos)
+ traverse(x.productIterator)
case xs: TraversableOnce[_] =>
- xs.foreach(traverse(_, parentPos))
+ xs.foreach(traverse)
case _ =>
}
- traverse(roots, NoPosition)
+ traverse(roots)
}
}