Minor refactoring in Kotlin binary class resolution
This commit is contained in:
+7
-6
@@ -17,14 +17,15 @@
|
||||
package org.jetbrains.kotlin.load.java.lazy
|
||||
|
||||
import org.jetbrains.kotlin.builtins.ReflectionTypes
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.storage.MemoizedFunctionToNullable
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaClassDescriptor
|
||||
import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaPackageFragment
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaClass
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.storage.MemoizedFunctionToNullable
|
||||
import org.jetbrains.kotlin.utils.emptyOrSingletonList
|
||||
|
||||
public class LazyJavaPackageFragmentProvider(
|
||||
@@ -76,7 +77,7 @@ public class LazyJavaPackageFragmentProvider(
|
||||
}
|
||||
val outerClass = javaClass.getOuterClass()
|
||||
if (outerClass == null) {
|
||||
return c.resolveBinaryClass(c.kotlinClassFinder.findKotlinClass(javaClass))?.kClass
|
||||
return c.resolveBinaryClass(c.kotlinClassFinder.findKotlinClass(javaClass))?.descriptor
|
||||
?: topLevelClasses(javaClass)
|
||||
}
|
||||
val outerClassScope = resolveClass(outerClass)?.getUnsubstitutedInnerClassesScope()
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ public class LazyPackageFragmentScopeForJavaPackage(
|
||||
val classId = ClassId(packageFragment.fqName, name)
|
||||
|
||||
val kotlinClass = c.resolveBinaryClass(c.kotlinClassFinder.findKotlinClass(classId))
|
||||
if (kotlinClass != null) return kotlinClass.kClass
|
||||
if (kotlinClass != null) return kotlinClass.descriptor
|
||||
|
||||
val javaClass = c.finder.findClass(classId)
|
||||
if (javaClass != null) {
|
||||
|
||||
@@ -59,28 +59,28 @@ class LazyJavaTypeParameterResolver(
|
||||
}
|
||||
}
|
||||
|
||||
data class JavaClassLookupResult(val jClass: JavaClass? = null, val kClass: ClassDescriptor? = null) {
|
||||
data class KotlinClassLookupResult(val descriptor: ClassDescriptor?) {
|
||||
companion object {
|
||||
val EMPTY = JavaClassLookupResult()
|
||||
val EMPTY = KotlinClassLookupResult(null)
|
||||
}
|
||||
}
|
||||
|
||||
fun LazyJavaResolverContext.resolveBinaryClass(kotlinClass: KotlinJvmBinaryClass?): JavaClassLookupResult? {
|
||||
fun LazyJavaResolverContext.resolveBinaryClass(kotlinClass: KotlinJvmBinaryClass?): KotlinClassLookupResult? {
|
||||
if (kotlinClass == null) return null
|
||||
|
||||
val header = kotlinClass.getClassHeader()
|
||||
val header = kotlinClass.classHeader
|
||||
if (!header.isCompatibleAbiVersion) {
|
||||
errorReporter.reportIncompatibleAbiVersion(kotlinClass.getClassId(), kotlinClass.getLocation(), header.version)
|
||||
errorReporter.reportIncompatibleAbiVersion(kotlinClass.classId, kotlinClass.location, header.version)
|
||||
}
|
||||
else if (header.kind == KotlinClassHeader.Kind.CLASS) {
|
||||
val descriptor = deserializedDescriptorResolver.resolveClass(kotlinClass)
|
||||
if (descriptor != null) {
|
||||
return JavaClassLookupResult(kClass = descriptor)
|
||||
return KotlinClassLookupResult(descriptor)
|
||||
}
|
||||
}
|
||||
else {
|
||||
// This is a package or trait-impl or something like that
|
||||
return JavaClassLookupResult.EMPTY
|
||||
return KotlinClassLookupResult.EMPTY
|
||||
}
|
||||
|
||||
return null
|
||||
|
||||
Reference in New Issue
Block a user