From 66e9c7e74b9548c2f61d6ac7af7de791ee2113f0 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Thu, 26 Feb 2015 17:23:06 +0100 Subject: Finished new position unpickling code. Pickling still has to be written. --- .../tools/dotc/core/pickling/TastyPrinter.scala | 23 +++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'src/dotty/tools/dotc/core/pickling/TastyPrinter.scala') diff --git a/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala b/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala index 751642a51..83b53abb3 100644 --- a/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala +++ b/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala @@ -6,6 +6,9 @@ import Contexts._, Decorators._ import printing.Texts._ import TastyName._ import TastyUnpickler._ +import TastyBuffer.Addr +import util.Positions.Position +import collection.mutable class TastyPrinter(bytes: Array[Byte])(implicit ctx: Context) { @@ -33,11 +36,11 @@ class TastyPrinter(bytes: Array[Byte])(implicit ctx: Context) { println("Names:") printNames() println("Trees:") - unpickle(new TreeUnpickler) - unpickle(new PositionUnpickler) + unpickle(new TreeSectionUnpickler) + unpickle(new PositionSectionUnpickler) } - class TreeUnpickler extends SectionUnpickler[Unit]("ASTs") { + class TreeSectionUnpickler extends SectionUnpickler[Unit]("ASTs") { import PickleFormat._ def unpickle(reader: TastyReader, tastyName: TastyName.Table): Unit = { import reader._ @@ -103,16 +106,12 @@ class TastyPrinter(bytes: Array[Byte])(implicit ctx: Context) { } } - class PositionUnpickler extends SectionUnpickler[Unit]("Positions") { + class PositionSectionUnpickler extends SectionUnpickler[Unit]("Positions") { def unpickle(reader: TastyReader, tastyName: TastyName.Table): Unit = { - import reader._ - var lastOffset = 0 - var lastAddr = 0 - while (!isAtEnd) { - lastOffset += readInt() - lastAddr += readInt() - println(s"$lastOffset: $lastAddr") - } + val (totalRange, positions) = new PositionUnpickler(reader).unpickle() + println(s"Positions in $totalRange:") + val sorted = positions.toSeq.sortBy(_._1.index) + for ((addr, pos) <- sorted) println(s"$addr: $pos") } } } \ No newline at end of file -- cgit v1.2.3