aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/backend/jvm/DottyBackendInterface.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2014-12-03 14:57:36 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2014-12-16 13:15:03 +0100
commite6fcd3fc5d766c15dd9071950d13ae772c696a92 (patch)
treee61232c8b154ea5e17824d123698465c744e8641 /src/dotty/tools/backend/jvm/DottyBackendInterface.scala
parent4b98e2203dfd2c2e5c17d9e2a9fdd9da92fb96c1 (diff)
downloaddotty-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.scala20
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?
}