From bb5762a056c3d2ee224cea0f01726d8900745366 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Sun, 8 Mar 2015 15:26:27 +0100 Subject: Further harmonization between typing and unpickling 1) Prefixes in selections are widened if unstable 2) DefDefs get Method flag set --- src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala b/src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala index 0cac3491a..1170d3eb8 100644 --- a/src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala +++ b/src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala @@ -347,6 +347,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { isAbstractType var flags = givenFlags if (lacksDefinition) flags |= Deferred + if (tag == DEFDEF) flags |= Method if (ctx.mode.is(Mode.InSuperCall) && !flags.is(ParamOrAccessor)) flags |= InSuperCall if (ctx.owner.isClass) { if (tag == TYPEPARAM) flags |= Param | ExpandedName // TODO check name to determine ExpandedName @@ -584,6 +585,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { ValDef(sym.asTerm) } else { + sym.setFlag(Method) sym.info = ExprType(info) pickling.println(i"reading param alias $name -> $currentAddr") DefDef(Nil, Nil, TypeTree(info)) @@ -693,9 +695,9 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { } def readRest(name: Name, sig: Signature) = { val unshadowed = if (name.isShadowedName) name.revertShadowed else name - val sel = readQual(unshadowed).selectWithSig(unshadowed, sig) - if (unshadowed != name) sel.withType(sel.tpe.asInstanceOf[NamedType].shadowed) - else sel + val qual = readQual(name) + untpd.Select(qual, unshadowed) + .withType(TermRef.withSig(qual.tpe.widenIfUnstable, name.asTermName, sig)) } readNameSplitSig match { case name: Name => readRest(name, Signature.NotAMethod) -- cgit v1.2.3