@@ -55,6 +55,11 @@ class TreePickler(pickler: TastyPickler) {
55
55
56
56
private def pickleName (name : Name ): Unit = writeNat(nameIndex(name).index)
57
57
58
+ private def pickleNameAndSig (name : Name , sig : Signature ): Unit =
59
+ pickleName(
60
+ if (sig eq Signature .NotAMethod ) name
61
+ else SignedName (name.toTermName, sig))
62
+
58
63
private def pickleSymRef (sym : Symbol )(implicit ctx : Context ) = symRefs.get(sym) match {
59
64
case Some (label) =>
60
65
if (label != NoAddr ) writeRef(label) else pickleForwardSymRef(sym)
@@ -146,19 +151,23 @@ class TreePickler(pickler: TastyPickler) {
146
151
writeByte(if (tpe.isType) TYPEREFdirect else TERMREFdirect )
147
152
pickleSymRef(sym)
148
153
}
149
- def pickleExternalRef (sym : Symbol ) =
154
+ def pickleExternalRef (sym : Symbol ) = {
155
+ def pickleCore () = {
156
+ pickleNameAndSig(sym.name, tpe.signature)
157
+ pickleType(tpe.prefix)
158
+ }
150
159
if (sym.is(Flags .Private )) {
151
160
writeByte(if (tpe.isType) TYPEREFin else TERMREFin )
152
161
withLength {
153
- pickleName(sym.name)
154
- pickleType(tpe.prefix)
162
+ pickleCore()
155
163
pickleType(sym.owner.typeRef)
156
164
}
157
165
}
158
166
else {
159
167
writeByte(if (tpe.isType) TYPEREF else TERMREF )
160
- pickleName(sym.name); pickleType(tpe.prefix )
168
+ pickleCore( )
161
169
}
170
+ }
162
171
if (sym.is(Flags .Package )) {
163
172
writeByte(if (tpe.isType) TYPEREFpkg else TERMREFpkg )
164
173
pickleName(sym.fullName)
@@ -340,9 +349,7 @@ class TreePickler(pickler: TastyPickler) {
340
349
case Select (qual, name) =>
341
350
writeByte(if (name.isTypeName) SELECTtpt else SELECT )
342
351
val sig = tree.tpe.signature
343
- pickleName(
344
- if (sig eq Signature .NotAMethod ) name
345
- else SignedName (name.toTermName, sig))
352
+ pickleNameAndSig(name, sig)
346
353
pickleTree(qual)
347
354
case Apply (fun, args) =>
348
355
writeByte(APPLY )
0 commit comments