Minor refactoring in Kotlin binary class resolution

This commit is contained in:
Alexander Udalov
2015-07-29 22:43:15 +03:00
parent 0d9b60dcbc
commit 9a0e322c51
3 changed files with 15 additions and 14 deletions
@@ -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()
@@ -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