aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/dotty/tools/dotc/core/pickling/TastyPrinter.scala')
-rw-r--r--src/dotty/tools/dotc/core/pickling/TastyPrinter.scala23
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