@@ -251,17 +251,17 @@ class TreeUnpickler(reader: TastyReader,
251251 val space = readType()
252252 sname match {
253253 case SignedName (name, sig) =>
254- TermRef (prefix, name, space.decl(name).atSignature(sig))
254+ TermRef (prefix, name, space.decl(name).asSeenFrom(prefix). atSignature(sig))
255255 case name =>
256- TermRef (prefix, name, space.decl(name))
256+ TermRef (prefix, name, space.decl(name).asSeenFrom(prefix) )
257257 }
258258 case TYPEREFin =>
259259 val name = readName().toTypeName
260260 val prefix = readType()
261261 val space = readType()
262262 space.decl(name) match {
263263 case symd : SymDenotation if prefix.isArgPrefixOf(symd.symbol) => TypeRef (prefix, symd.symbol)
264- case _ => TypeRef (prefix, name, space.decl(name))
264+ case _ => TypeRef (prefix, name, space.decl(name).asSeenFrom(prefix) )
265265 }
266266 case REFINEDtype =>
267267 var name : Name = readName()
@@ -424,7 +424,11 @@ class TreeUnpickler(reader: TastyReader,
424424 flags = flags | (if (tag == VALDEF ) ModuleValCreationFlags else ModuleClassCreationFlags )
425425 if (ctx.owner.isClass) {
426426 if (tag == TYPEPARAM ) flags |= Param
427- else if (tag == PARAM ) flags |= ParamAccessor
427+ else if (tag == PARAM ) {
428+ flags |= ParamAccessor
429+ if (! rhsIsEmpty) // param alias
430+ flags |= Method
431+ }
428432 }
429433 else if (isParamTag(tag)) flags |= Param
430434 flags
@@ -585,6 +589,8 @@ class TreeUnpickler(reader: TastyReader,
585589 case SCALA2X => addFlag(Scala2x )
586590 case DEFAULTparameterized => addFlag(DefaultParameterized )
587591 case STABLE => addFlag(Stable )
592+ case PARAMsetter =>
593+ addFlag(ParamAccessor )
588594 case PRIVATEqualified =>
589595 readByte()
590596 privateWithin = readType().typeSymbol
@@ -728,11 +734,6 @@ class TreeUnpickler(reader: TastyReader,
728734 vparamss.nestedMap(_.symbol), name == nme.CONSTRUCTOR )
729735 val resType = ctx.effectiveResultType(sym, typeParams, tpt.tpe)
730736 sym.info = ctx.methodType(typeParams, valueParamss, resType)
731- if (sym.isSetter && sym.accessedFieldOrGetter.is(ParamAccessor )) {
732- // reconstitute ParamAccessor flag of setters for var parameters, which is not pickled
733- sym.setFlag(ParamAccessor )
734- sym.resetFlag(Deferred )
735- }
736737 DefDef (tparams, vparamss, tpt)
737738 case VALDEF =>
738739 val tpt = readTpt()(localCtx)
@@ -775,7 +776,6 @@ class TreeUnpickler(reader: TastyReader,
775776 ValDef (tpt)
776777 }
777778 else {
778- sym.setFlag(Method )
779779 sym.info = ExprType (tpt.tpe)
780780 pickling.println(i " reading param alias $name -> $currentAddr" )
781781 DefDef (Nil , Nil , tpt)
@@ -1142,10 +1142,14 @@ class TreeUnpickler(reader: TastyReader,
11421142 val splice = splices(idx)
11431143 val reifiedArgs = args.map(arg => if (arg.isTerm) new TreeExpr (arg) else new TreeType (arg))
11441144 if (isType) {
1145- val quotedType = splice.asInstanceOf [Seq [Any ] => quoted.Type [_]](reifiedArgs)
1145+ val quotedType =
1146+ if (reifiedArgs.isEmpty) splice.asInstanceOf [quoted.Type [_]]
1147+ else splice.asInstanceOf [Seq [Any ] => quoted.Type [_]](reifiedArgs)
11461148 PickledQuotes .quotedTypeToTree(quotedType)
11471149 } else {
1148- val quotedExpr = splice.asInstanceOf [Seq [Any ] => quoted.Expr [_]](reifiedArgs)
1150+ val quotedExpr =
1151+ if (reifiedArgs.isEmpty) splice.asInstanceOf [quoted.Expr [_]]
1152+ else splice.asInstanceOf [Seq [Any ] => quoted.Expr [_]](reifiedArgs)
11491153 PickledQuotes .quotedExprToTree(quotedExpr)
11501154 }
11511155 }
0 commit comments