@@ -116,11 +116,18 @@ object IndexedContext:
116
116
val outer : IndexedContext = IndexedContext (ctx.outer)
117
117
val names : Names = extractNames(ctx)
118
118
119
+
120
+ def isAccessibleFromSafe (sym : Symbol , site : Type ): Boolean =
121
+ try sym.isAccessibleFrom(site, superAccess = false )(using ctx)
122
+ catch
123
+ case NonFatal (e) =>
124
+ false
125
+
119
126
def findSymbol (name : String ): Option [List [Symbol ]] =
120
127
names.symbols
121
128
.get(name)
122
129
.map(_.toList)
123
- .orElse(outer.findSymbol(name))
130
+ .orElse(outer.findSymbol(name)).map(_.filter(sym => isAccessibleFromSafe(sym, ctx.importInfo.nn.site)))
124
131
125
132
def scopeSymbols : List [Symbol ] =
126
133
val acc = Set .newBuilder[Symbol ]
@@ -155,37 +162,27 @@ object IndexedContext:
155
162
)
156
163
157
164
private def extractNames (ctx : Context ): Names =
158
- def isAccessibleFromSafe (sym : Symbol , site : Type ): Boolean =
159
- try sym.isAccessibleFrom(site, superAccess = false )
160
- catch
161
- case NonFatal (e) =>
162
- false
163
165
164
- def accessibleSymbols (site : Type , tpe : Type )(using
166
+
167
+ def foundSymbols (site : Type , tpe : Type )(using
165
168
Context
166
169
): List [Symbol ] =
167
- tpe.decls.toList.filter(sym => isAccessibleFromSafe(sym, site))
170
+ tpe.decls.toList
168
171
169
172
def accesibleMembers (site : Type )(using Context ): List [Symbol ] =
170
173
site.allMembers
171
- .filter(denot =>
172
- try isAccessibleFromSafe(denot.symbol, site)
173
- catch
174
- case NonFatal (e) =>
175
- false
176
- )
177
174
.map(_.symbol)
178
175
.toList
179
176
180
177
def allAccessibleSymbols (
181
178
tpe : Type ,
182
179
filter : Symbol => Boolean = _ => true
183
180
)(using Context ): List [Symbol ] =
184
- val initial = accessibleSymbols (tpe, tpe).filter(filter)
181
+ val initial = foundSymbols (tpe, tpe).filter(filter)
185
182
val fromPackageObjects =
186
183
initial
187
184
.filter(_.isPackageObject)
188
- .flatMap(sym => accessibleSymbols (tpe, sym.thisType))
185
+ .flatMap(sym => foundSymbols (tpe, sym.thisType))
189
186
initial ++ fromPackageObjects
190
187
191
188
def fromImport (site : Type , name : Name )(using Context ): List [Symbol ] =
0 commit comments