Skip to content

Commit a579e5e

Browse files
committed
Cleanup pickling of NamedTypes
1 parent 56d1fee commit a579e5e

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

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

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -144,18 +144,10 @@ class TreePickler(pickler: TastyPickler) {
144144
pickleConstant(value)
145145
case tpe: NamedType =>
146146
val sym = tpe.symbol
147-
def pickleRef() =
148-
if (tpe.prefix == NoPrefix) {
149-
writeByte(if (tpe.isType) TYPEREFdirect else TERMREFdirect)
150-
pickleSymRef(sym)
151-
}
152-
else {
153-
assert(tpe.symbol.isClass)
154-
assert(tpe.symbol.is(Flags.Scala2x), tpe.symbol.showLocated)
155-
writeByte(TYPEREF) // should be changed to a new entry that keeps track of prefix, symbol & owner
156-
pickleName(tpe.name)
157-
pickleType(tpe.prefix)
158-
}
147+
def pickleDirectRef() = {
148+
writeByte(if (tpe.isType) TYPEREFdirect else TERMREFdirect)
149+
pickleSymRef(sym)
150+
}
159151
if (sym.is(Flags.Package)) {
160152
writeByte(if (tpe.isType) TYPEREFpkg else TERMREFpkg)
161153
pickleName(sym.fullName)
@@ -166,16 +158,23 @@ class TreePickler(pickler: TastyPickler) {
166158
withLength {
167159
pickleName(sym.name)
168160
pickleType(sym.info)
169-
pickleRef()
161+
pickleDirectRef()
170162
}
171163
}
172-
else if (tpe.hasFixedSym) {
173-
pickleRef()
164+
else if (tpe.prefix == NoPrefix) {
165+
pickleDirectRef()
174166
}
175-
else if (isLocallyDefined(sym) && tpe.signature.eq(Signature.NotAMethod)) {
167+
else if (isLocallyDefined(sym)) {
176168
writeByte(if (tpe.isType) TYPEREFsymbol else TERMREFsymbol)
177169
pickleSymRef(sym); pickleType(tpe.prefix)
178-
} else {
170+
}
171+
else if (tpe.hasFixedSym) {
172+
assert(tpe.symbol.isClass && tpe.symbol.is(Flags.Scala2x), tpe.symbol.showLocated)
173+
writeByte(TYPEREF) // should be changed to a new entry that keeps track of prefix, symbol & owner
174+
pickleName(tpe.name)
175+
pickleType(tpe.prefix)
176+
}
177+
else {
179178
writeByte(if (tpe.isType) TYPEREF else TERMREF)
180179
pickleName(tpe.designatorName); pickleType(tpe.prefix)
181180
}

0 commit comments

Comments
 (0)