@@ -144,39 +144,41 @@ class TreePickler(pickler: TastyPickler) {
144144 pickleConstant(value)
145145 case tpe : NamedType =>
146146 val sym = tpe.symbol
147- def pickleDirectRef () = {
148- writeByte(if (tpe.isType) TYPEREFdirect else TERMREFdirect )
149- pickleSymRef(sym)
150- }
151147 if (sym.is(Flags .Package )) {
152148 writeByte(if (tpe.isType) TYPEREFpkg else TERMREFpkg )
153149 pickleName(sym.fullName)
154150 }
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- }
164151 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()
166166 }
167167 else if (isLocallyDefined(sym)) {
168168 writeByte(if (tpe.isType) TYPEREFsymbol else TERMREFsymbol )
169169 pickleSymRef(sym); pickleType(tpe.prefix)
170170 }
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- }
177171 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+ }
178180 writeByte(if (tpe.isType) TYPEREF else TERMREF )
179- pickleName(tpe.designatorName ); pickleType(tpe.prefix)
181+ pickleName(name ); pickleType(tpe.prefix)
180182 }
181183 case tpe : ThisType =>
182184 if (tpe.cls.is(Flags .Package ) && ! tpe.cls.isEffectiveRoot) {
0 commit comments