@@ -15,14 +15,15 @@ import tastyquery.Utils.*
15
15
import tastyquery .reader .ReaderContext .rctx
16
16
import tastyquery .reader .classfiles .{ClassfileParser , ClassfileReader }
17
17
import tastyquery .reader .classfiles .ClassfileParser .{ClassKind , InnerClassDecl , Resolver }
18
+ import tastyquery .reader .classfiles .ClassfileReader .Structure
18
19
import tastyquery .reader .tasties .TastyUnpickler
19
20
20
21
private [tastyquery] object Loaders {
21
22
22
23
private [tastyquery] final class PackageLoadingInfo private [Loaders ] (
23
24
pkg : PackageSymbol ,
24
25
initPackageData : List [PackageData ]
25
- )( using Resolver ) :
26
+ ):
26
27
private lazy val dataByBinaryName =
27
28
val localRoots = mutable.HashMap .empty[String , ClassData ]
28
29
for packageData <- initPackageData do
@@ -124,8 +125,7 @@ private[tastyquery] object Loaders {
124
125
ClassfileParser .loadScala2Class(structure)
125
126
true
126
127
case ClassKind .Java =>
127
- val innerDecls = ClassfileParser .loadJavaClass(pkg, termName(classData.binaryName), structure)
128
- doLoadJavaInnerClasses(innerDecls, loadedFiles)
128
+ doLoadJavaTopLevelClass(classData, structure, loadedFiles)
129
129
true
130
130
case ClassKind .TASTy =>
131
131
throw TastyFormatException (s " Missing TASTy file for class ${classData.binaryName} in package $pkg" )
@@ -137,8 +137,19 @@ private[tastyquery] object Loaders {
137
137
false
138
138
end doLoadClassFile
139
139
140
- private def doLoadJavaInnerClasses ( explore : List [ InnerClassDecl ] , loadedFiles : LoadedFiles )(
140
+ private def doLoadJavaTopLevelClass ( classData : ClassData , structure : Structure , loadedFiles : LoadedFiles )(
141
141
using ReaderContext
142
+ ): Unit =
143
+ // The resolver for this top-level class and all its inner classes
144
+ given Resolver = Resolver ()
145
+
146
+ val innerDecls = ClassfileParser .loadJavaClass(pkg, termName(classData.binaryName), structure)
147
+ doLoadJavaInnerClasses(innerDecls, loadedFiles)
148
+ end doLoadJavaTopLevelClass
149
+
150
+ private def doLoadJavaInnerClasses (explore : List [InnerClassDecl ], loadedFiles : LoadedFiles )(
151
+ using ReaderContext ,
152
+ Resolver
142
153
): Unit =
143
154
explore match
144
155
case inner :: rest =>
@@ -174,8 +185,6 @@ private[tastyquery] object Loaders {
174
185
end PackageLoadingInfo
175
186
176
187
class Loader (val classpath : Classpath ) {
177
- given Resolver = Resolver ()
178
-
179
188
private type ByEntryMap = Map [ClasspathEntry , IArray [(PackageSymbol , IArray [String ])]]
180
189
181
190
private var initialized = false
0 commit comments