diff options
Diffstat (limited to 'src/dotty/tools/dotc/core')
-rw-r--r-- | src/dotty/tools/dotc/core/Denotations.scala | 9 | ||||
-rw-r--r-- | src/dotty/tools/dotc/core/Symbols.scala | 2 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/core/Denotations.scala b/src/dotty/tools/dotc/core/Denotations.scala index dd740e916..a89aa6bf8 100644 --- a/src/dotty/tools/dotc/core/Denotations.scala +++ b/src/dotty/tools/dotc/core/Denotations.scala @@ -182,12 +182,12 @@ object Denotations { * Throw a `TypeError` if predicate fails to disambiguate symbol. * Return a stubsymbol if no alternative satisfies the predicate. */ - def requiredSymbol(p: Symbol => Boolean, source: AbstractFile = null)(implicit ctx: Context): Symbol = { + def requiredSymbol(p: Symbol => Boolean, name: Name, source: AbstractFile = null)(implicit ctx: Context): Symbol = { val sym = disambiguate(p).symbol if (sym.exists) sym else { val firstSym = ((NoSymbol: Symbol) /: alternatives.map(_.symbol)) (_ orElse _) val owner = if (firstSym.exists) firstSym.owner else NoSymbol - ctx.newStubSymbol(owner, firstSym.name, source) + ctx.newStubSymbol(owner, name, source) } } @@ -405,6 +405,9 @@ object Denotations { val valid = _validFor def bringForward(): Unit = { this match { + case NoDenotation => + validFor = Period(currentPeriod.runId, validFor.firstPhaseId, validFor.lastPhaseId) + return case denot: SymDenotation => val top = denot.topLevelSym if (top.owner.info.decl(top.name).symbol == top) { @@ -576,7 +579,7 @@ object Denotations { val result = owner.info.member(name) if (result.exists) result else { - val alt = missingHook(owner.symbol, name) + val alt = missingHook(owner.symbol.moduleClass, name) if (alt.exists) alt.denot else result } diff --git a/src/dotty/tools/dotc/core/Symbols.scala b/src/dotty/tools/dotc/core/Symbols.scala index ddc667fd6..52456f98d 100644 --- a/src/dotty/tools/dotc/core/Symbols.scala +++ b/src/dotty/tools/dotc/core/Symbols.scala @@ -261,7 +261,7 @@ trait Symbols { this: Context => def requiredClass(path: PreName): ClassSymbol = { val pathName = path.toTypeName - val sym = base.staticRef(pathName).requiredSymbol(_.isClass, pathName).asClass + base.staticRef(pathName).requiredSymbol(_.isClass, pathName).asClass } def requiredModule(path: PreName): TermSymbol = { |