@@ -187,7 +187,7 @@ class TastyPrinter(bytes: Array[Byte], val testPickler: Boolean) {
187
187
}
188
188
indent -= 2
189
189
}
190
- sb.append(s " \n\n Trees ( ${endAddr.index - startAddr.index} bytes, starting from $base ): " )
190
+ sb.append(sectionHeader( " Trees " , reader, lineEnd = false ) )
191
191
while (! isAtEnd) {
192
192
printTree()
193
193
newLine()
@@ -199,7 +199,7 @@ class TastyPrinter(bytes: Array[Byte], val testPickler: Boolean) {
199
199
def unpickle0 (reader : TastyReader )(using tastyName : NameRefs ): Unit = {
200
200
import reader .*
201
201
val posUnpickler = new PositionUnpickler (reader, tastyName)
202
- sb.append(s " \n\n Positions ( ${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base ): \n " )
202
+ sb.append(sectionHeader( " Positions " , reader) )
203
203
val lineSizes = posUnpickler.lineSizes
204
204
sb.append(s " lines: ${lineSizes.length}\n " )
205
205
sb.append(s " line sizes: \n " )
@@ -232,7 +232,7 @@ class TastyPrinter(bytes: Array[Byte], val testPickler: Boolean) {
232
232
import reader .*
233
233
val comments = new CommentUnpickler (reader).comments
234
234
if ! comments.isEmpty then
235
- sb.append(s " \n\n Comments ( ${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base ): \n " )
235
+ sb.append(sectionHeader( " Comments " , reader) )
236
236
val sorted = comments.toSeq.sortBy(_._1.index)
237
237
for ((addr, cmt) <- sorted) {
238
238
sb.append(treeStr(" %6d" .format(addr.index)))
@@ -245,7 +245,7 @@ class TastyPrinter(bytes: Array[Byte], val testPickler: Boolean) {
245
245
import dotty .tools .tasty .TastyFormat .*
246
246
def unpickle0 (reader : TastyReader )(using nameAtRef : NameRefs ): Unit = {
247
247
import reader .*
248
- sb.append(s " \n\n Attributes ( ${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base ): \n " )
248
+ sb.append(sectionHeader( " Attributes " , reader) )
249
249
while ! isAtEnd do
250
250
// TODO: Should we elide attributes under testPickler? (i.e.
251
251
// if we add new attributes many check files will need to be updated)
@@ -290,6 +290,12 @@ class TastyPrinter(bytes: Array[Byte], val testPickler: Boolean) {
290
290
}
291
291
}
292
292
293
+ private final def sectionHeader (name : String , reader : TastyReader , lineEnd : Boolean = true ): String =
294
+ val count = reader.endAddr.index - reader.startAddr.index
295
+ val suffix = if lineEnd then " \n " else " "
296
+ val base = if testPickler then " <elided base index>" else reader.base
297
+ s " \n\n $name ( $count bytes, starting from $base): $suffix"
298
+
293
299
abstract class PrinterSectionUnpickler [T ](val name : String ) {
294
300
def unpickle0 (reader : TastyReader )(using refs : NameRefs ): T
295
301
}
0 commit comments