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