Skip to content

Commit 6bb23dd

Browse files
Homogenize TASTy printer formatting (#19139)
2 parents 2d2beb1 + 9b1a32e commit 6bb23dd

File tree

1 file changed

+24
-55
lines changed

1 file changed

+24
-55
lines changed

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

+24-55
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,49 +81,35 @@ 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-
unpickle(new PositionSectionUnpickler) match {
109-
case Some(s) => sb.append("\n\n").append(s)
110-
case _ =>
111-
}
112-
unpickle(new CommentSectionUnpickler) match {
113-
case Some(s) => sb.append("\n\n").append(s)
114-
case _ =>
115-
}
116-
unpickle(new AttributesSectionUnpickler) match {
117-
case Some(s) => sb.append("\n\n").append(s)
118-
case _ =>
119-
}
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))
106+
unpickle(new AttributesSectionUnpickler(sb))
120107
sb.result
121108
}
122109

123-
class TreeSectionUnpickler extends SectionUnpickler[String](ASTsSection) {
110+
class TreeSectionUnpickler(sb: StringBuilder) extends SectionUnpickler[Unit](ASTsSection) {
124111
import dotty.tools.tasty.TastyFormat.*
125-
126-
private val sb: StringBuilder = new StringBuilder
127-
128-
def unpickle(reader: TastyReader, tastyName: NameTable): String = {
112+
def unpickle(reader: TastyReader, tastyName: NameTable): Unit = {
129113
import reader.*
130114
var indent = 0
131115
def newLine() = {
@@ -186,23 +170,19 @@ class TastyPrinter(bytes: Array[Byte]) {
186170
}
187171
indent -= 2
188172
}
189-
sb.append(s"Trees (${endAddr.index - startAddr.index} bytes, starting from $base):")
173+
sb.append(s"\n\nTrees (${endAddr.index - startAddr.index} bytes, starting from $base):")
190174
while (!isAtEnd) {
191175
printTree()
192176
newLine()
193177
}
194-
sb.result
195178
}
196179
}
197180

198-
class PositionSectionUnpickler extends SectionUnpickler[String](PositionsSection) {
199-
200-
private val sb: StringBuilder = new StringBuilder
201-
202-
def unpickle(reader: TastyReader, tastyName: NameTable): String = {
181+
class PositionSectionUnpickler(sb: StringBuilder) extends SectionUnpickler[Unit](PositionsSection) {
182+
def unpickle(reader: TastyReader, tastyName: NameTable): Unit = {
203183
import reader.*
204184
val posUnpickler = new PositionUnpickler(reader, tastyName)
205-
sb.append(s"Positions (${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base):\n")
185+
sb.append(s"\n\nPositions (${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base):\n")
206186
val lineSizes = posUnpickler.lineSizes
207187
sb.append(s" lines: ${lineSizes.length}\n")
208188
sb.append(s" line sizes:\n")
@@ -222,48 +202,37 @@ class TastyPrinter(bytes: Array[Byte]) {
222202
sb.append(s"\n source paths:\n")
223203
val sortedPath = sources.toSeq.sortBy(_._1.index)
224204
for ((addr, nameRef) <- sortedPath) {
225-
sb.append(treeStr("%6d: ".format(addr.index)))
205+
sb.append(treeStr("%6d".format(addr.index)))
206+
sb.append(": ")
226207
sb.append(nameStr(s"${nameRef.index} [${tastyName(nameRef)}]"))
227208
sb.append("\n")
228209
}
229-
230-
sb.result
231210
}
232211
}
233212

234-
class CommentSectionUnpickler extends SectionUnpickler[String](CommentsSection) {
235-
236-
private val sb: StringBuilder = new StringBuilder
237-
238-
def unpickle(reader: TastyReader, tastyName: NameTable): String = {
213+
class CommentSectionUnpickler(sb: StringBuilder) extends SectionUnpickler[Unit](CommentsSection) {
214+
def unpickle(reader: TastyReader, tastyName: NameTable): Unit = {
239215
import reader.*
240216
val comments = new CommentUnpickler(reader).comments
241217
if !comments.isEmpty then
242-
sb.append(s"Comments (${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base):\n")
218+
sb.append(s"\n\nComments (${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base):\n")
243219
val sorted = comments.toSeq.sortBy(_._1.index)
244220
for ((addr, cmt) <- sorted) {
245221
sb.append(treeStr("%6d".format(addr.index)))
246222
sb.append(s": ${cmt.raw} (expanded = ${cmt.isExpanded})\n")
247223
}
248-
sb.result
249224
}
250225
}
251226

252-
class AttributesSectionUnpickler extends SectionUnpickler[String](AttributesSection) {
227+
class AttributesSectionUnpickler(sb: StringBuilder) extends SectionUnpickler[Unit](AttributesSection) {
253228
import dotty.tools.tasty.TastyFormat.*
254-
255-
private val sb: StringBuilder = new StringBuilder
256-
257-
def unpickle(reader: TastyReader, tastyName: NameTable): String = {
229+
def unpickle(reader: TastyReader, tastyName: NameTable): Unit = {
258230
import reader.*
259-
sb.append(s" ${reader.endAddr.index - reader.currentAddr.index}")
260231
val attributes = new AttributeUnpickler(reader).attributes
261-
sb.append(s" attributes bytes:\n")
232+
sb.append(s"\n\nAttributes (${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base):\n")
262233

263234
for tag <- attributes.booleanTags do
264-
sb.append(" ").append(attributeTagToString(tag)).append("\n")
265-
266-
sb.result
235+
sb.append(" ").append(attributeTagToString(tag)).append("\n")
267236
}
268237
}
269238

0 commit comments

Comments
 (0)