JDR: Remove LazyJavaClassResolver#resolveClassByFqName()

This commit is contained in:
Pavel V. Talanov
2014-06-02 19:53:03 +04:00
parent 53df12598d
commit 7d9742417f
2 changed files with 18 additions and 20 deletions
@@ -100,13 +100,28 @@ public class LazyJavaPackageFragmentProvider(
override fun getClassNamesInPackage(packageName: FqName) = getPackageFragment(packageName)?.getMemberScope()?.getAllClassNames().orEmpty()
fun getClass(fqName: FqName): ClassDescriptor? = c.javaClassResolver.resolveClassByFqName(fqName)
fun getClass(javaClass: JavaClass): ClassDescriptor? = c.javaClassResolver.resolveClass(javaClass)
internal val resolveKotlinBinaryClass = c.storageManager.createMemoizedFunctionWithNullableValues {
(kotlinClass: KotlinJvmBinaryClass) -> c.deserializedDescriptorResolver.resolveClass(kotlinClass)
}
fun getClass(javaClass: JavaClass): ClassDescriptor? = c.javaClassResolver.resolveClass(javaClass)
fun getClass(fqName: FqName): ClassDescriptor? {
val builtinClass = DescriptorResolverUtils.getKotlinBuiltinClassDescriptor(fqName)
if (builtinClass != null) return builtinClass
// TODO Here we prefer sources (something outside JDR subsystem) to binaries, which should actually be driven by module dependencies separation
// See DeserializedDescriptorResolver.javaDescriptorFinder
val classFromSources = c.javaResolverCache.getClassResolvedFromSource(fqName)
if (classFromSources != null) return classFromSources
val (jClass, kClass) = c.findClassInJava(fqName)
if (jClass != null) return c.javaClassResolver.resolveClass(jClass)
if (kClass != null) return kClass
return null
}
private inner class FragmentClassResolver : LazyJavaClassResolver {
override fun resolveClass(javaClass: JavaClass): ClassDescriptor? {
// TODO: there's no notion of module separation here. We must refuse to resolve classes from other modules
@@ -128,21 +143,5 @@ public class LazyJavaPackageFragmentProvider(
val nestedClass = outerClassScope?.getClassifier(javaClass.getName()) as? ClassDescriptor
return nestedClass ?: c.javaResolverCache.getClass(javaClass)
}
override fun resolveClassByFqName(fqName: FqName): ClassDescriptor? {
val builtinClass = DescriptorResolverUtils.getKotlinBuiltinClassDescriptor(fqName)
if (builtinClass != null) return builtinClass
// TODO Here we prefer sources (something outside JDR subsystem) to binaries, which should actually be driven by module dependencies separation
// See DeserializedDescriptorResolver.javaDescriptorFinder
val classFromSources = c.javaResolverCache.getClassResolvedFromSource(fqName)
if (classFromSources != null) return classFromSources
val (jClass, kClass) = c.findClassInJava(fqName)
if (jClass != null) return resolveClass(jClass)
if (kClass != null) return kClass
return null
}
}
}
@@ -29,7 +29,6 @@ import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass
trait LazyJavaClassResolver {
fun resolveClass(javaClass: JavaClass): ClassDescriptor?
fun resolveClassByFqName(fqName: FqName): ClassDescriptor?
}
trait TypeParameterResolver {