@@ -25,18 +25,14 @@ class TastyClassName(bytes: Array[Byte]) {
25
25
import dotty .tools .tasty .TastyFormat ._
26
26
def unpickle (reader : TastyReader , tastyName : NameTable ): (TermName , TermName ) = {
27
27
import reader ._
28
- def readName () = {
29
- val idx = readNat()
30
- nameAtRef(NameRef (idx))
31
- }
32
28
def readNames (packageName : TermName ): (TermName , TermName ) = {
33
29
val tag = readByte()
34
30
if (tag >= firstLengthTreeTag) {
35
31
val len = readNat()
36
32
val end = currentAddr + len
37
33
tag match {
38
34
case TYPEDEF =>
39
- val className = readName()
35
+ val className = reader. readName()
40
36
goto(end)
41
37
(packageName, className)
42
38
case IMPORT | VALDEF =>
@@ -48,13 +44,26 @@ class TastyClassName(bytes: Array[Byte]) {
48
44
}
49
45
else tag match {
50
46
case TERMREFpkg | TYPEREFpkg =>
51
- val subPackageName = readName()
47
+ val subPackageName = reader.readName()
48
+ readNames(subPackageName)
49
+ case SHAREDtype =>
50
+ val addr = reader.readAddr()
51
+ val reader2 = reader.subReader(addr, reader.endAddr)
52
+ val tag2 = reader2.readByte()
53
+ assert(tag2 == TERMREFpkg || tag2 == TYPEREFpkg )
54
+ val subPackageName = reader2.readName()
52
55
readNames(subPackageName)
53
56
case _ =>
54
57
readNames(packageName)
55
58
}
56
59
}
57
60
readNames(nme.EMPTY_PACKAGE )
58
61
}
62
+
63
+ extension (reader : TastyReader ) def readName () = {
64
+ val idx = reader.readNat()
65
+ nameAtRef(NameRef (idx))
66
+ }
59
67
}
68
+
60
69
}
0 commit comments