diff options
-rw-r--r-- | src/dotty/tools/dotc/core/SymDenotations.scala | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/dotty/tools/dotc/core/SymDenotations.scala b/src/dotty/tools/dotc/core/SymDenotations.scala index e9aeb286a..62262db93 100644 --- a/src/dotty/tools/dotc/core/SymDenotations.scala +++ b/src/dotty/tools/dotc/core/SymDenotations.scala @@ -843,18 +843,22 @@ object SymDenotations { } /** A bitset that contains the superId's of all base classes */ - private def superClassBits(implicit ctx: Context): BitSet = { - if (mySuperClassBits == null) computeBases - mySuperClassBits - } + private def superClassBits(implicit ctx: Context): BitSet = + if (classParents.isEmpty) BitSet() // can happen when called too early in Namers + else { + if (mySuperClassBits == null) computeBases + mySuperClassBits + } /** The base classes of this class in linearization order, * with the class itself as first element. */ - def baseClasses(implicit ctx: Context): List[ClassSymbol] = { - if (myBaseClasses == null) computeBases - myBaseClasses - } + def baseClasses(implicit ctx: Context): List[ClassSymbol] = + if (classParents.isEmpty) classSymbol :: Nil // can happen when called too early in Namers + else { + if (myBaseClasses == null) computeBases + myBaseClasses + } final override def derivesFrom(base: Symbol)(implicit ctx: Context): Boolean = !isAbsent && |