Skip to content

Commit e85a772

Browse files
committed
Harden accessibleMembers
This can cause MergeErrors which should be caught and ignored.
1 parent f7639cb commit e85a772

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

compiler/src/dotty/tools/dotc/interactive/Interactive.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ object Interactive {
2424
object Include { // should be an enum, really.
2525
type Set = Int
2626
val overridden = 1 // include trees whose symbol is overridden by `sym`
27-
val overriding = 2 // include trees whose symbol overrides `sym`
27+
val overriding = 2 // include trees whose symbol overrides `sym` (but for performance only in same source file)
2828
val references = 4 // include references and not just definitions
2929
}
3030

@@ -148,6 +148,7 @@ object Interactive {
148148
ref.name.isTermName,
149149
ref.name.isTypeName)
150150
case _ =>
151+
println(i"COMPUTE from ${path.headOption}")
151152
(0, "", false, false)
152153
}
153154

@@ -176,7 +177,10 @@ object Interactive {
176177
case site: NamedType if site.symbol.is(Package) =>
177178
site.decls.toList.filter(include) // Don't look inside package members -- it's too expensive.
178179
case _ =>
179-
site.allMembers.collect {
180+
def appendMemberSyms(name: Name, buf: mutable.Buffer[SingleDenotation]): Unit =
181+
try buf ++= site.member(name).alternatives
182+
catch { case ex: TypeError => }
183+
site.memberDenots(takeAllFilter, appendMemberSyms).collect {
180184
case mbr if include(mbr.symbol) => mbr.accessibleFrom(site, superAccess).symbol
181185
case _ => NoSymbol
182186
}.filter(_.exists)

0 commit comments

Comments
 (0)