aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/core/SymDenotations.scala24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/dotty/tools/dotc/core/SymDenotations.scala b/src/dotty/tools/dotc/core/SymDenotations.scala
index 990c6e317..e572f129b 100644
--- a/src/dotty/tools/dotc/core/SymDenotations.scala
+++ b/src/dotty/tools/dotc/core/SymDenotations.scala
@@ -41,15 +41,19 @@ trait SymDenotations { this: Context =>
def stillValid(denot: SymDenotation): Boolean =
if (denot is ValidForever) true
- else try {
- val owner = denot.owner.denot
- stillValid(owner) && (
- !owner.isClass
- || (owner.unforcedDecls.lookupAll(denot.name) contains denot.symbol)
- || denot.isSelfSym
- )
- } catch {
- case ex: StaleSymbol => false
+ else {
+ val initial = denot.initial
+ if (initial ne denot)
+ ctx.withPhase(initial.validFor.firstPhaseId).stillValid(initial.asSymDenotation)
+ else try {
+ val owner = denot.owner.denot
+ stillValid(owner) && (
+ !owner.isClass
+ || (owner.unforcedDecls.lookupAll(denot.name) contains denot.symbol)
+ || denot.isSelfSym)
+ } catch {
+ case ex: StaleSymbol => false
+ }
}
}
@@ -72,8 +76,6 @@ object SymDenotations {
/** Debug only
override def validFor_=(p: Period) = {
- if (name == "Trees".toTermName && p.runId == 3)
- assert(symbol.id != 6161)
super.validFor_=(p)
}
*/