Skip to content

Commit 5c523fd

Browse files
committed
Further harmonization between typing and unpickling
1) Prefixes in selections are widened if unstable 2) DefDefs get Method flag set
1 parent 982235f commit 5c523fd

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
347347
isAbstractType
348348
var flags = givenFlags
349349
if (lacksDefinition) flags |= Deferred
350+
if (tag == DEFDEF) flags |= Method
350351
if (ctx.mode.is(Mode.InSuperCall) && !flags.is(ParamOrAccessor)) flags |= InSuperCall
351352
if (ctx.owner.isClass) {
352353
if (tag == TYPEPARAM) flags |= Param | ExpandedName // TODO check name to determine ExpandedName
@@ -584,6 +585,7 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
584585
ValDef(sym.asTerm)
585586
}
586587
else {
588+
sym.setFlag(Method)
587589
sym.info = ExprType(info)
588590
pickling.println(i"reading param alias $name -> $currentAddr")
589591
DefDef(Nil, Nil, TypeTree(info))
@@ -693,9 +695,9 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
693695
}
694696
def readRest(name: Name, sig: Signature) = {
695697
val unshadowed = if (name.isShadowedName) name.revertShadowed else name
696-
val sel = readQual(unshadowed).selectWithSig(unshadowed, sig)
697-
if (unshadowed != name) sel.withType(sel.tpe.asInstanceOf[NamedType].shadowed)
698-
else sel
698+
val qual = readQual(name)
699+
untpd.Select(qual, unshadowed)
700+
.withType(TermRef.withSig(qual.tpe.widenIfUnstable, name.asTermName, sig))
699701
}
700702
readNameSplitSig match {
701703
case name: Name => readRest(name, Signature.NotAMethod)

0 commit comments

Comments
 (0)