@@ -64,8 +64,6 @@ object TastyPrinter:
64
64
65
65
class TastyPrinter (bytes : Array [Byte ]) {
66
66
67
- private val sb : StringBuilder = new StringBuilder
68
-
69
67
class TastyPrinterUnpickler extends TastyUnpickler (bytes) {
70
68
var namesStart : Addr = uninitialized
71
69
var namesEnd : Addr = uninitialized
@@ -83,47 +81,34 @@ class TastyPrinter(bytes: Array[Byte]) {
83
81
84
82
private def nameRefToString (ref : NameRef ): String = nameToString(nameAtRef(ref))
85
83
86
- private def printHeader (): Unit =
84
+ private def printHeader (sb : StringBuilder ): Unit =
87
85
val header = unpickler.header
88
86
sb.append(" Header:\n " )
89
87
sb.append(s " version: ${header.majorVersion}. ${header.minorVersion}. ${header.experimentalVersion}\n " )
90
88
sb.append(" tooling: " ).append(header.toolingVersion).append(" \n " )
91
89
sb.append(" UUID: " ).append(header.uuid).append(" \n " )
92
90
sb.append(" \n " )
93
91
94
- private def printNames (): Unit =
92
+ private def printNames (sb : StringBuilder ): Unit =
95
93
sb.append(s " Names ( ${unpickler.namesEnd.index - unpickler.namesStart.index} bytes, starting from ${unpickler.namesStart.index}): \n " )
96
94
for ((name, idx) <- nameAtRef.contents.zipWithIndex) {
97
95
val index = nameStr(" %6d" .format(idx))
98
96
sb.append(index).append(" : " ).append(nameToString(name)).append(" \n " )
99
97
}
100
98
101
99
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))
118
106
sb.result
119
107
}
120
108
121
- class TreeSectionUnpickler extends SectionUnpickler [String ](ASTsSection ) {
109
+ class TreeSectionUnpickler ( sb : StringBuilder ) extends SectionUnpickler [Unit ](ASTsSection ) {
122
110
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 = {
127
112
import reader .*
128
113
var indent = 0
129
114
def newLine () = {
@@ -184,23 +169,19 @@ class TastyPrinter(bytes: Array[Byte]) {
184
169
}
185
170
indent -= 2
186
171
}
187
- sb.append(s " Trees ( ${endAddr.index - startAddr.index} bytes, starting from $base): " )
172
+ sb.append(s " \n\n Trees ( ${endAddr.index - startAddr.index} bytes, starting from $base): " )
188
173
while (! isAtEnd) {
189
174
printTree()
190
175
newLine()
191
176
}
192
- sb.result
193
177
}
194
178
}
195
179
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 = {
201
182
import reader .*
202
183
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\n Positions ( ${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base): \n " )
204
185
val lineSizes = posUnpickler.lineSizes
205
186
sb.append(s " lines: ${lineSizes.length}\n " )
206
187
sb.append(s " line sizes: \n " )
@@ -220,30 +201,25 @@ class TastyPrinter(bytes: Array[Byte]) {
220
201
sb.append(s " \n source paths: \n " )
221
202
val sortedPath = sources.toSeq.sortBy(_._1.index)
222
203
for ((addr, nameRef) <- sortedPath) {
223
- sb.append(treeStr(" %6d: " .format(addr.index)))
204
+ sb.append(treeStr(" %6d" .format(addr.index)))
205
+ sb.append(" : " )
224
206
sb.append(nameStr(s " ${nameRef.index} [ ${tastyName(nameRef)}] " ))
225
207
sb.append(" \n " )
226
208
}
227
-
228
- sb.result
229
209
}
230
210
}
231
211
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 = {
237
214
import reader .*
238
215
val comments = new CommentUnpickler (reader).comments
239
216
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\n Comments ( ${reader.endAddr.index - reader.startAddr.index} bytes, starting from $base): \n " )
241
218
val sorted = comments.toSeq.sortBy(_._1.index)
242
219
for ((addr, cmt) <- sorted) {
243
220
sb.append(treeStr(" %6d" .format(addr.index)))
244
221
sb.append(s " : ${cmt.raw} (expanded = ${cmt.isExpanded}) \n " )
245
222
}
246
- sb.result
247
223
}
248
224
}
249
225
0 commit comments