Skip to content

Commit 9628b80

Browse files
Backport "Homogenize TASTy printer formatting" to LTS (#20784)
Backports #19139 to the LTS branch. PR submitted by the release tooling. [skip ci]
2 parents bcabc38 + 87f8a95 commit 9628b80

File tree

1 file changed

+19
-43
lines changed

1 file changed

+19
-43
lines changed

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

+19-43
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,6 @@ object TastyPrinter:
6464

6565
class TastyPrinter(bytes: Array[Byte]) {
6666

67-
private val sb: StringBuilder = new StringBuilder
68-
6967
class TastyPrinterUnpickler extends TastyUnpickler(bytes) {
7068
var namesStart: Addr = uninitialized
7169
var namesEnd: Addr = uninitialized
@@ -83,47 +81,34 @@ class TastyPrinter(bytes: Array[Byte]) {
8381

8482
private def nameRefToString(ref: NameRef): String = nameToString(nameAtRef(ref))
8583

86-
private def printHeader(): Unit =
84+
private def printHeader(sb: StringBuilder): Unit =
8785
val header = unpickler.header
8886
sb.append("Header:\n")
8987
sb.append(s" version: ${header.majorVersion}.${header.minorVersion}.${header.experimentalVersion}\n")
9088
sb.append(" tooling: ").append(header.toolingVersion).append("\n")
9189
sb.append(" UUID: ").append(header.uuid).append("\n")
9290
sb.append("\n")
9391

94-
private def printNames(): Unit =
92+
private def printNames(sb: StringBuilder): Unit =
9593
sb.append(s"Names (${unpickler.namesEnd.index - unpickler.namesStart.index} bytes, starting from ${unpickler.namesStart.index}):\n")
9694
for ((name, idx) <- nameAtRef.contents.zipWithIndex) {
9795
val index = nameStr("%6d".format(idx))
9896
sb.append(index).append(": ").append(nameToString(name)).append("\n")
9997
}
10098

10199
def showContents(): String = {
102-
printHeader()
103-
printNames()
104-
unpickle(new TreeSectionUnpickler) match {
105-
case Some(s) => sb.append("\n\n").append(s)
106-
case _ =>
107-
}
108-
sb.append("\n\n")
109-
unpickle(new PositionSectionUnpickler) match {
110-
case Some(s) => sb.append(s)
111-
case _ =>
112-
}
113-
sb.append("\n\n")
114-
unpickle(new CommentSectionUnpickler) match {
115-
case Some(s) => sb.append(s)
116-
case _ =>
117-
}
100+
val sb: StringBuilder = new StringBuilder
101+
printHeader(sb)
102+
printNames(sb)
103+
unpickle(new TreeSectionUnpickler(sb))
104+
unpickle(new PositionSectionUnpickler(sb))
105+
unpickle(new CommentSectionUnpickler(sb))
118106
sb.result
119107
}
120108

121-
class TreeSectionUnpickler extends SectionUnpickler[String](ASTsSection) {
109+
class TreeSectionUnpickler(sb: StringBuilder) extends SectionUnpickler[Unit](ASTsSection) {
122110
import dotty.tools.tasty.TastyFormat.*
123-
124-
private val sb: StringBuilder = new StringBuilder
125-
126-
def unpickle(reader: TastyReader, tastyName: NameTable): String = {
111+
def unpickle(reader: TastyReader, tastyName: NameTable): Unit = {
127112
import reader.*
128113
var indent = 0
129114
def newLine() = {
@@ -184,23 +169,19 @@ class TastyPrinter(bytes: Array[Byte]) {
184169
}
185170
indent -= 2
186171
}
187-
sb.append(s"Trees (${endAddr.index - startAddr.index} bytes, starting from $base):")
172+
sb.append(s"\n\nTrees (${endAddr.index - startAddr.index} bytes, starting from $base):")
188173
while (!isAtEnd) {
189174
printTree()
190175
newLine()
191176
}
192-
sb.result
193177
}
194178
}
195179

196-
class PositionSectionUnpickler extends SectionUnpickler[String](PositionsSection) {
197-
198-
private val sb: StringBuilder = new StringBuilder
199-
200-
def unpickle(reader: TastyReader, tastyName: NameTable): String = {
180+
class PositionSectionUnpickler(sb: StringBuilder) extends SectionUnpickler[Unit](PositionsSection) {
181+
def unpickle(reader: TastyReader, tastyName: NameTable): Unit = {
201182
import reader.*
202183
val posUnpickler = new PositionUnpickler(reader, tastyName)
203-
sb.append(s"Positions (${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base):\n")
184+
sb.append(s"\n\nPositions (${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base):\n")
204185
val lineSizes = posUnpickler.lineSizes
205186
sb.append(s" lines: ${lineSizes.length}\n")
206187
sb.append(s" line sizes:\n")
@@ -220,30 +201,25 @@ class TastyPrinter(bytes: Array[Byte]) {
220201
sb.append(s"\n source paths:\n")
221202
val sortedPath = sources.toSeq.sortBy(_._1.index)
222203
for ((addr, nameRef) <- sortedPath) {
223-
sb.append(treeStr("%6d: ".format(addr.index)))
204+
sb.append(treeStr("%6d".format(addr.index)))
205+
sb.append(": ")
224206
sb.append(nameStr(s"${nameRef.index} [${tastyName(nameRef)}]"))
225207
sb.append("\n")
226208
}
227-
228-
sb.result
229209
}
230210
}
231211

232-
class CommentSectionUnpickler extends SectionUnpickler[String](CommentsSection) {
233-
234-
private val sb: StringBuilder = new StringBuilder
235-
236-
def unpickle(reader: TastyReader, tastyName: NameTable): String = {
212+
class CommentSectionUnpickler(sb: StringBuilder) extends SectionUnpickler[Unit](CommentsSection) {
213+
def unpickle(reader: TastyReader, tastyName: NameTable): Unit = {
237214
import reader.*
238215
val comments = new CommentUnpickler(reader).comments
239216
if !comments.isEmpty then
240-
sb.append(s"Comments (${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base):\n")
217+
sb.append(s"\n\nComments (${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base):\n")
241218
val sorted = comments.toSeq.sortBy(_._1.index)
242219
for ((addr, cmt) <- sorted) {
243220
sb.append(treeStr("%6d".format(addr.index)))
244221
sb.append(s": ${cmt.raw} (expanded = ${cmt.isExpanded})\n")
245222
}
246-
sb.result
247223
}
248224
}
249225

0 commit comments

Comments
 (0)