@@ -17,17 +17,22 @@ object DottyUnpickler {
17
17
/** Exception thrown if classfile is corrupted */
18
18
class BadSignature (msg : String ) extends RuntimeException (msg)
19
19
20
- class TreeSectionUnpickler (posUnpickler : Option [PositionUnpickler ], commentUnpickler : Option [CommentUnpickler ])
20
+ class TreeSectionUnpickler (posUnpickler : Option [PositionUnpickler ], lineSizesUnpickler : Option [ LineSizesUnpickler ], commentUnpickler : Option [CommentUnpickler ])
21
21
extends SectionUnpickler [TreeUnpickler ](TreePickler .sectionName) {
22
22
def unpickle (reader : TastyReader , nameAtRef : NameTable ): TreeUnpickler =
23
- new TreeUnpickler (reader, nameAtRef, posUnpickler, commentUnpickler)
23
+ new TreeUnpickler (reader, nameAtRef, posUnpickler, lineSizesUnpickler, commentUnpickler)
24
24
}
25
25
26
26
class PositionsSectionUnpickler extends SectionUnpickler [PositionUnpickler ](" Positions" ) {
27
27
def unpickle (reader : TastyReader , nameAtRef : NameTable ): PositionUnpickler =
28
28
new PositionUnpickler (reader, nameAtRef)
29
29
}
30
30
31
+ class LineSizesSectionUnpickler extends SectionUnpickler [LineSizesUnpickler ](" LineSizes" ) {
32
+ def unpickle (reader : TastyReader , nameAtRef : NameTable ): LineSizesUnpickler =
33
+ new LineSizesUnpickler (reader)
34
+ }
35
+
31
36
class CommentsSectionUnpickler extends SectionUnpickler [CommentUnpickler ](" Comments" ) {
32
37
def unpickle (reader : TastyReader , nameAtRef : NameTable ): CommentUnpickler =
33
38
new CommentUnpickler (reader)
@@ -44,17 +49,18 @@ class DottyUnpickler(bytes: Array[Byte], mode: UnpickleMode = UnpickleMode.TopLe
44
49
45
50
val unpickler : TastyUnpickler = new TastyUnpickler (bytes)
46
51
private val posUnpicklerOpt = unpickler.unpickle(new PositionsSectionUnpickler )
52
+ private val lineSizesUnpicklerOpt = unpickler.unpickle(new LineSizesSectionUnpickler )
47
53
private val commentUnpicklerOpt = unpickler.unpickle(new CommentsSectionUnpickler )
48
- private val treeUnpickler = unpickler.unpickle(treeSectionUnpickler(posUnpicklerOpt, commentUnpicklerOpt)).get
54
+ private val treeUnpickler = unpickler.unpickle(treeSectionUnpickler(posUnpicklerOpt, lineSizesUnpicklerOpt, commentUnpicklerOpt)).get
49
55
50
56
/** Enter all toplevel classes and objects into their scopes
51
57
* @param roots a set of SymDenotations that should be overwritten by unpickling
52
58
*/
53
59
def enter (roots : Set [SymDenotation ])(using Context ): Unit =
54
60
treeUnpickler.enter(roots)
55
61
56
- protected def treeSectionUnpickler (posUnpicklerOpt : Option [PositionUnpickler ], commentUnpicklerOpt : Option [CommentUnpickler ]): TreeSectionUnpickler =
57
- new TreeSectionUnpickler (posUnpicklerOpt, commentUnpicklerOpt)
62
+ protected def treeSectionUnpickler (posUnpicklerOpt : Option [PositionUnpickler ], lineSizesUnpicklerOpt : Option [ LineSizesUnpickler ], commentUnpicklerOpt : Option [CommentUnpickler ]): TreeSectionUnpickler =
63
+ new TreeSectionUnpickler (posUnpicklerOpt, lineSizesUnpicklerOpt, commentUnpicklerOpt)
58
64
59
65
protected def computeRootTrees (using Context ): List [Tree ] = treeUnpickler.unpickle(mode)
60
66
0 commit comments