Skip to content

Commit dd9a330

Browse files
committed
Cater for external symbolic references in pickler
1 parent 510bbc5 commit dd9a330

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

compiler/src/dotty/tools/dotc/core/tasty/TreePickler.scala

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,19 @@ class TreePickler(pickler: TastyPickler) {
146146
writeByte(if (tpe.isType) TYPEREFdirect else TERMREFdirect)
147147
pickleSymRef(sym)
148148
}
149+
def pickleExternalRef(sym: Symbol) =
150+
if (sym.is(Flags.Private)) {
151+
writeByte(if (tpe.isType) TYPEREFin else TERMREFin)
152+
withLength {
153+
pickleName(sym.name)
154+
pickleType(tpe.prefix)
155+
pickleType(sym.owner.typeRef)
156+
}
157+
}
158+
else {
159+
writeByte(if (tpe.isType) TYPEREF else TERMREF)
160+
pickleName(sym.name); pickleType(tpe.prefix)
161+
}
149162
if (sym.is(Flags.Package)) {
150163
writeByte(if (tpe.isType) TYPEREFpkg else TERMREFpkg)
151164
pickleName(sym.fullName)
@@ -176,6 +189,8 @@ class TreePickler(pickler: TastyPickler) {
176189
pickleType(tpe.prefix)
177190
pickleType(space)
178191
}
192+
case sym: Symbol =>
193+
pickleExternalRef(sym)
179194
}
180195
case tpe: ThisType =>
181196
if (tpe.cls.is(Flags.Package) && !tpe.cls.isEffectiveRoot) {

0 commit comments

Comments
 (0)