Skip to content

Commit 87399f3

Browse files
committed
Packages are never fully completed
The previous commit made packages always fully completed. This is wrong - since new members can be added to packages at any time, packages are never fully completed.
1 parent 38c50be commit 87399f3

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/dotty/tools/dotc/core/SymDenotations.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,18 +1211,19 @@ object SymDenotations {
12111211

12121212
/** The denotation is fully completed: all attributes are fully defined.
12131213
* ClassDenotations compiled from source are first completed, then fully completed.
1214+
* Packages are never fully completed since members can be added at any time.
12141215
* @see Namer#ClassCompleter
12151216
*/
12161217
private def isFullyCompleted(implicit ctx: Context): Boolean = {
12171218
def isFullyCompletedRef(tp: TypeRef) = tp.denot match {
12181219
case d: ClassDenotation => d.isFullyCompleted
12191220
case _ => false
12201221
}
1221-
def isLocallyFullyCompleted =
1222-
if (classParents.isEmpty) is(Package) || symbol.eq(defn.AnyClass)
1222+
def testFullyCompleted =
1223+
if (classParents.isEmpty) !is(Package) && symbol.eq(defn.AnyClass)
12231224
else classParents.forall(isFullyCompletedRef)
12241225
flagsUNSAFE.is(FullyCompleted) ||
1225-
isCompleted && isLocallyFullyCompleted && { setFlag(FullyCompleted); true }
1226+
isCompleted && testFullyCompleted && { setFlag(FullyCompleted); true }
12261227
}
12271228

12281229
// ------ syncing inheritance-related info -----------------------------

0 commit comments

Comments
 (0)