Drop KotlinClassFinder#findKotlinClass(FqName)

findKotlinClass(ClassId) should be used instead
This commit is contained in:
Alexander Udalov
2014-09-12 17:37:44 +04:00
parent 422e922c36
commit a8c5f1bb3a
7 changed files with 26 additions and 24 deletions
@@ -64,8 +64,7 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
override fun resolveDeclarationsInPackage(packageFqName: FqName): Collection<DeclarationDescriptor> {
assert(packageFqName == directoryPackageFqName, "Was called for $packageFqName but only $directoryPackageFqName is expected.")
val packageClassFqName = PackageClassUtils.getPackageClassFqName(packageFqName)
val binaryClassForPackageClass = localClassFinder.findKotlinClass(packageClassFqName)
val binaryClassForPackageClass = localClassFinder.findKotlinClass(PackageClassUtils.getPackageClassId(packageFqName))
val annotationData = binaryClassForPackageClass?.getClassHeader()?.annotationData
if (annotationData == null) {
LOG.error("Could not read annotation data for $packageFqName from ${binaryClassForPackageClass?.getClassName()}")
@@ -79,16 +78,15 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
return membersScope.getAllDescriptors()
}
private val localClassFinder = object: KotlinClassFinder {
override fun findKotlinClass(fqName: FqName) = findKotlinClass(fqName.toClassId())
override fun findKotlinClass(javaClass: JavaClass) = findKotlinClass(javaClass.getFqName()!!)
private val localClassFinder = object : KotlinClassFinder {
override fun findKotlinClass(javaClass: JavaClass) = findKotlinClass(javaClass.getFqName()!!.toClassId())
override fun findKotlinClass(classId: ClassId): KotlinJvmBinaryClass? {
if (classId.getPackageFqName() != directoryPackageFqName) {
return null
}
val segments = DeserializedResolverUtils.kotlinFqNameToJavaFqName(classId.getRelativeClassName()).pathSegments()
val targetName = segments.makeString("$", postfix = ".class")
val targetName = segments.joinToString("$", postfix = ".class")
val virtualFile = packageDirectory.findChild(targetName)
if (virtualFile != null && isKotlinCompiledFile(virtualFile)) {
return KotlinBinaryClassCache.getKotlinBinaryClass(virtualFile)