diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-02 20:38:06 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-16 13:15:02 +0100 |
commit | eb50bc48534edd4ff126d681cedc5aad92e279d8 (patch) | |
tree | 27ae1b54f6159dd706ee7c17b2ec38000e377de5 /src/dotty/tools/backend/jvm/DottyBackendInterface.scala | |
parent | fd21e6ee334bd81e26be84d97d3d0e0642b20ee5 (diff) | |
download | dotty-eb50bc48534edd4ff126d681cedc5aad92e279d8.tar.gz dotty-eb50bc48534edd4ff126d681cedc5aad92e279d8.tar.bz2 dotty-eb50bc48534edd4ff126d681cedc5aad92e279d8.zip |
Fix originalOwner for symbols that did not exist at typer.
Diffstat (limited to 'src/dotty/tools/backend/jvm/DottyBackendInterface.scala')
-rw-r--r-- | src/dotty/tools/backend/jvm/DottyBackendInterface.scala | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala index 585b54e58..a723ce4e1 100644 --- a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala +++ b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala @@ -444,7 +444,16 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{ // navigation def owner: Symbol = toDenot(sym).owner def rawowner: Symbol = owner - def originalOwner: Symbol = toDenot(sym)(ctx.withPhase(ctx.typerPhase)).owner + def originalOwner: Symbol = { + try { + val original = toDenot(sym).initial + val validity = original.validFor + val shiftedContext = ctx.withPhase(validity.phaseId) + toDenot(sym)(shiftedContext).maybeOwner + } catch { + case e: NotDefinedHere => NoSymbol // todo: do we have a method to tests this? + } + } def parentSymbols: List[Symbol] = toDenot(sym).info.parents.map(_.typeSymbol) def superClass: Symbol = toDenot(sym).superClass def enclClass: Symbol = toDenot(sym).enclosingClass |