Skip to content

Commit a8349be

Browse files
committed
Generalize member computation for package members
Previously, package-object local definitions won over global ones. It's more systematic to form the union of both. Also, absent dummy modules or classes have to be ignored in order not to poison the union. These changes would have made sense also for old-style package objects, btw.
1 parent 0d67aa8 commit a8349be

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1976,7 +1976,9 @@ object SymDenotations {
19761976
if (pcls.isCompleting) recur(pobjs1, acc)
19771977
else recur(pobjs1, acc.union(pcls.computeNPMembersNamed(name)))
19781978
case nil =>
1979-
if (acc.exists) acc else super.computeNPMembersNamed(name)
1979+
val directMembers = super.computeNPMembersNamed(name)
1980+
if (acc.exists) acc.union(directMembers.filterWithPredicate(!_.symbol.isAbsent))
1981+
else directMembers
19801982
}
19811983
if (symbol `eq` defn.ScalaPackageClass) {
19821984
val denots = super.computeNPMembersNamed(name)

0 commit comments

Comments
 (0)