Skip to content

Commit 603196b

Browse files
committed
Fix TASTy source position printer
Now it properly shows that the sources form the position section are references in the name table. This includes the coloring of the indices and referenced names. ```diff source paths: - 0: t/Test.scala + 0: 21 [t/Test.scala] ```
1 parent fab3f21 commit 603196b

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

compiler/src/dotty/tools/dotc/core/tasty/PositionUnpickler.scala

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
1818

1919
private var myLineSizes: Array[Int] = uninitialized
2020
private var mySpans: util.HashMap[Addr, Span] = uninitialized
21-
private var mySourcePaths: util.HashMap[Addr, String] = uninitialized
21+
private var mySourceNameRefs: util.HashMap[Addr, NameRef] = uninitialized
2222
private var isDefined = false
2323

2424
def ensureDefined(): Unit = {
@@ -31,15 +31,14 @@ class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
3131
i += 1
3232

3333
mySpans = util.HashMap[Addr, Span]()
34-
mySourcePaths = util.HashMap[Addr, String]()
34+
mySourceNameRefs = util.HashMap[Addr, NameRef]()
3535
var curIndex = 0
3636
var curStart = 0
3737
var curEnd = 0
3838
while (!isAtEnd) {
3939
val header = readInt()
4040
if (header == SOURCE) {
41-
val path = nameAtRef(readNameRef()).toString
42-
mySourcePaths(Addr(curIndex)) = path
41+
mySourceNameRefs(Addr(curIndex)) = readNameRef()
4342
}
4443
else {
4544
val addrDelta = header >> 3
@@ -64,9 +63,9 @@ class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
6463
mySpans
6564
}
6665

67-
private[tasty] def sourcePaths: util.ReadOnlyMap[Addr, String] = {
66+
private[tasty] def sourceNameRefs: util.ReadOnlyMap[Addr, NameRef] = {
6867
ensureDefined()
69-
mySourcePaths
68+
mySourceNameRefs
7069
}
7170

7271
private[tasty] def lineSizes: Array[Int] = {
@@ -75,5 +74,5 @@ class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
7574
}
7675

7776
def spanAt(addr: Addr): Span = spans.getOrElse(addr, NoSpan)
78-
def sourcePathAt(addr: Addr): String = sourcePaths.getOrElse(addr, "")
77+
def sourcePathAt(addr: Addr): String = sourceNameRefs.get(addr).fold("")(nameAtRef(_).toString)
7978
}

compiler/src/dotty/tools/dotc/core/tasty/TastyPrinter.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,12 +194,12 @@ class TastyPrinter(bytes: Array[Byte]) {
194194
sb.append(s": ${offsetToInt(pos.start)} .. ${pos.end}\n")
195195
}
196196

197-
val sources = posUnpickler.sourcePaths
197+
val sources = posUnpickler.sourceNameRefs
198198
sb.append(s"\n source paths:\n")
199199
val sortedPath = sources.toSeq.sortBy(_._1.index)
200-
for ((addr, path) <- sortedPath) {
200+
for ((addr, nameRef) <- sortedPath) {
201201
sb.append(treeStr("%10d: ".format(addr.index)))
202-
sb.append(path)
202+
sb.append(nameStr(s"${nameRef.index} [${tastyName(nameRef)}]"))
203203
sb.append("\n")
204204
}
205205

0 commit comments

Comments
 (0)