diff options
author | Martin Odersky <odersky@gmail.com> | 2015-02-26 17:23:06 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-03-18 11:14:11 +0100 |
commit | 66e9c7e74b9548c2f61d6ac7af7de791ee2113f0 (patch) | |
tree | 20f7fd9b8a1d82c0d7a8d20cbf0aacb07860ca4c /src/dotty/tools/dotc/core/pickling/TastyPrinter.scala | |
parent | 90696143b36f6ef68bf281a739dd3846908aec34 (diff) | |
download | dotty-66e9c7e74b9548c2f61d6ac7af7de791ee2113f0.tar.gz dotty-66e9c7e74b9548c2f61d6ac7af7de791ee2113f0.tar.bz2 dotty-66e9c7e74b9548c2f61d6ac7af7de791ee2113f0.zip |
Finished new position unpickling code.
Pickling still has to be written.
Diffstat (limited to 'src/dotty/tools/dotc/core/pickling/TastyPrinter.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/pickling/TastyPrinter.scala | 23 |
1 files changed, 11 insertions, 12 deletions
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 |