@@ -3,6 +3,8 @@ package dotc
3
3
package core
4
4
package tasty
5
5
6
+ import scala .compiletime .uninitialized
7
+
6
8
import dotty .tools .tasty .{TastyFormat , TastyBuffer , TastyReader }
7
9
import TastyFormat .SOURCE
8
10
import TastyBuffer .{Addr , NameRef }
@@ -14,9 +16,9 @@ import Names.TermName
14
16
class PositionUnpickler (reader : TastyReader , nameAtRef : NameRef => TermName ) {
15
17
import reader .*
16
18
17
- private var myLineSizes : Array [Int ] = _
18
- private var mySpans : util.HashMap [Addr , Span ] = _
19
- private var mySourcePaths : util.HashMap [Addr , String ] = _
19
+ private var myLineSizes : Array [Int ] = uninitialized
20
+ private var mySpans : util.HashMap [Addr , Span ] = uninitialized
21
+ private var mySourceNameRefs : util.HashMap [Addr , NameRef ] = uninitialized
20
22
private var isDefined = false
21
23
22
24
def ensureDefined (): Unit = {
@@ -29,15 +31,14 @@ class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
29
31
i += 1
30
32
31
33
mySpans = util.HashMap [Addr , Span ]()
32
- mySourcePaths = util.HashMap [Addr , String ]()
34
+ mySourceNameRefs = util.HashMap [Addr , NameRef ]()
33
35
var curIndex = 0
34
36
var curStart = 0
35
37
var curEnd = 0
36
38
while (! isAtEnd) {
37
39
val header = readInt()
38
40
if (header == SOURCE ) {
39
- val path = nameAtRef(readNameRef()).toString
40
- mySourcePaths(Addr (curIndex)) = path
41
+ mySourceNameRefs(Addr (curIndex)) = readNameRef()
41
42
}
42
43
else {
43
44
val addrDelta = header >> 3
@@ -62,9 +63,9 @@ class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
62
63
mySpans
63
64
}
64
65
65
- private [tasty] def sourcePaths : util.ReadOnlyMap [Addr , String ] = {
66
+ private [tasty] def sourceNameRefs : util.ReadOnlyMap [Addr , NameRef ] = {
66
67
ensureDefined()
67
- mySourcePaths
68
+ mySourceNameRefs
68
69
}
69
70
70
71
private [tasty] def lineSizes : Array [Int ] = {
@@ -73,5 +74,5 @@ class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
73
74
}
74
75
75
76
def spanAt (addr : Addr ): Span = spans.getOrElse(addr, NoSpan )
76
- def sourcePathAt (addr : Addr ): String = sourcePaths.getOrElse (addr, " " )
77
+ def sourcePathAt (addr : Addr ): String = sourceNameRefs.get (addr).fold( " " )(nameAtRef(_).toString )
77
78
}
0 commit comments