aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2014-12-02 20:38:06 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-12-16 13:15:02 +0100
commiteb50bc48534edd4ff126d681cedc5aad92e279d8 (patch)
tree27ae1b54f6159dd706ee7c17b2ec38000e377de5 /src
parentfd21e6ee334bd81e26be84d97d3d0e0642b20ee5 (diff)
downloaddotty-eb50bc48534edd4ff126d681cedc5aad92e279d8.tar.gz
dotty-eb50bc48534edd4ff126d681cedc5aad92e279d8.tar.bz2
dotty-eb50bc48534edd4ff126d681cedc5aad92e279d8.zip
Fix originalOwner for symbols that did not exist at typer.
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/backend/jvm/DottyBackendInterface.scala11
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