@@ -64,8 +64,6 @@ object TastyPrinter:
6464
6565class 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\n Trees ( ${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\n Positions ( ${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\n Comments ( ${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\n Attributes ( ${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