aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-02-26 17:23:06 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-18 11:14:11 +0100
commit66e9c7e74b9548c2f61d6ac7af7de791ee2113f0 (patch)
tree20f7fd9b8a1d82c0d7a8d20cbf0aacb07860ca4c /src/dotty/tools/dotc/core/pickling/TastyPrinter.scala
parent90696143b36f6ef68bf281a739dd3846908aec34 (diff)
downloaddotty-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.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