diff options
author | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-03 14:57:36 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2014-12-16 13:15:03 +0100 |
commit | e6fcd3fc5d766c15dd9071950d13ae772c696a92 (patch) | |
tree | e61232c8b154ea5e17824d123698465c744e8641 /src/dotty/tools/backend/jvm/DottyBackendInterface.scala | |
parent | 4b98e2203dfd2c2e5c17d9e2a9fdd9da92fb96c1 (diff) | |
download | dotty-e6fcd3fc5d766c15dd9071950d13ae772c696a92.tar.gz dotty-e6fcd3fc5d766c15dd9071950d13ae772c696a92.tar.bz2 dotty-e6fcd3fc5d766c15dd9071950d13ae772c696a92.zip |
Mimic scalac originalOwner.
Diffstat (limited to 'src/dotty/tools/backend/jvm/DottyBackendInterface.scala')
-rw-r--r-- | src/dotty/tools/backend/jvm/DottyBackendInterface.scala | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala index 2363112f8..7096d0991 100644 --- a/src/dotty/tools/backend/jvm/DottyBackendInterface.scala +++ b/src/dotty/tools/backend/jvm/DottyBackendInterface.scala @@ -390,7 +390,9 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{ def thisType: Type = toDenot(sym).thisType // tests - def isClass: Boolean = sym.isClass + def isClass: Boolean = { + sym.isClass && (sym.isPackageObject || !(sym is Flags.Package)) + } def isType: Boolean = sym.isType def isAnonymousClass: Boolean = toDenot(sym).isAnonymousClass def isConstructor: Boolean = toDenot(sym).isConstructor @@ -414,7 +416,7 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{ def isDeferred: Boolean = sym is Flags.Deferred def isPrivate: Boolean = sym is Flags.Private def getsJavaFinalFlag: Boolean = - isFinal && !sym.isClassConstructor && !(sym is Flags.Mutable) && !(sym.enclosingClass is Flags.JavaInterface) + isFinal && !toDenot(sym).isClassConstructor && !(sym is Flags.Mutable) && !(sym.enclosingClass is Flags.JavaInterface) def getsJavaPrivateFlag: Boolean = isPrivate //|| (sym.isPrimaryConstructor && sym.owner.isTopLevelModuleClass) @@ -438,7 +440,7 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{ (sym is Flags.Module) && !(sym is Flags.ImplClass) /// !sym.isNestedClass def isJavaEntryPoint: Boolean = CollectEntryPoints.isJavaEntyPoint(sym) - def isClassConstructor: Boolean = sym.name == nme.CONSTRUCTOR + def isClassConstructor: Boolean = toDenot(sym).isClassConstructor /** * True for module classes of modules that are top-level or owned only by objects. Module classes @@ -454,10 +456,14 @@ class DottyBackendInterface()(implicit ctx: Context) extends BackendInterface{ def rawowner: Symbol = owner def originalOwner: Symbol = { try { - val original = toDenot(sym).initial - val validity = original.validFor - val shiftedContext = ctx.withPhase(validity.phaseId) - toDenot(sym)(shiftedContext).maybeOwner + if (sym.exists) { + val original = toDenot(sym).initial + val validity = original.validFor + val shiftedContext = ctx.withPhase(validity.phaseId) + val r = toDenot(sym)(shiftedContext).maybeOwner + if(r is Flags.Package) NoSymbol + else r + } else NoSymbol } catch { case e: NotDefinedHere => NoSymbol // todo: do we have a method to tests this? } |