@@ -144,39 +144,41 @@ class TreePickler(pickler: TastyPickler) {
144
144
pickleConstant(value)
145
145
case tpe : NamedType =>
146
146
val sym = tpe.symbol
147
- def pickleDirectRef () = {
148
- writeByte(if (tpe.isType) TYPEREFdirect else TERMREFdirect )
149
- pickleSymRef(sym)
150
- }
151
147
if (sym.is(Flags .Package )) {
152
148
writeByte(if (tpe.isType) TYPEREFpkg else TERMREFpkg )
153
149
pickleName(sym.fullName)
154
150
}
155
- else if (sym is Flags .BindDefinedType ) {
156
- registerDef(sym)
157
- writeByte(BIND )
158
- withLength {
159
- pickleName(sym.name)
160
- pickleType(sym.info)
161
- pickleDirectRef()
162
- }
163
- }
164
151
else if (tpe.prefix == NoPrefix ) {
165
- pickleDirectRef()
152
+ def pickleDirectRef () = {
153
+ writeByte(if (tpe.isType) TYPEREFdirect else TERMREFdirect )
154
+ pickleSymRef(sym)
155
+ }
156
+ if (sym is Flags .BindDefinedType ) {
157
+ registerDef(sym)
158
+ writeByte(BIND )
159
+ withLength {
160
+ pickleName(sym.name)
161
+ pickleType(sym.info)
162
+ pickleDirectRef()
163
+ }
164
+ }
165
+ else pickleDirectRef()
166
166
}
167
167
else if (isLocallyDefined(sym)) {
168
168
writeByte(if (tpe.isType) TYPEREFsymbol else TERMREFsymbol )
169
169
pickleSymRef(sym); pickleType(tpe.prefix)
170
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
171
else {
172
+ val name = tpe.designator match {
173
+ case designator : Symbol =>
174
+ assert(tpe.symbol.isClass && tpe.symbol.is(Flags .Scala2x ), tpe.symbol.showLocated)
175
+ // Note: vulnerability here, since Scala2x allows several classes with same name and prefix
176
+ designator.name
177
+ case designator : Name =>
178
+ designator
179
+ }
178
180
writeByte(if (tpe.isType) TYPEREF else TERMREF )
179
- pickleName(tpe.designatorName ); pickleType(tpe.prefix)
181
+ pickleName(name ); pickleType(tpe.prefix)
180
182
}
181
183
case tpe : ThisType =>
182
184
if (tpe.cls.is(Flags .Package ) && ! tpe.cls.isEffectiveRoot) {
0 commit comments