JDR: Remove LazyJavaClassResolver#resolveClassByFqName()
This commit is contained in:
+18
-19
@@ -100,13 +100,28 @@ public class LazyJavaPackageFragmentProvider(
|
|||||||
|
|
||||||
override fun getClassNamesInPackage(packageName: FqName) = getPackageFragment(packageName)?.getMemberScope()?.getAllClassNames().orEmpty()
|
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 {
|
internal val resolveKotlinBinaryClass = c.storageManager.createMemoizedFunctionWithNullableValues {
|
||||||
(kotlinClass: KotlinJvmBinaryClass) -> c.deserializedDescriptorResolver.resolveClass(kotlinClass)
|
(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 {
|
private inner class FragmentClassResolver : LazyJavaClassResolver {
|
||||||
override fun resolveClass(javaClass: JavaClass): ClassDescriptor? {
|
override fun resolveClass(javaClass: JavaClass): ClassDescriptor? {
|
||||||
// TODO: there's no notion of module separation here. We must refuse to resolve classes from other modules
|
// 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
|
val nestedClass = outerClassScope?.getClassifier(javaClass.getName()) as? ClassDescriptor
|
||||||
return nestedClass ?: c.javaResolverCache.getClass(javaClass)
|
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 {
|
trait LazyJavaClassResolver {
|
||||||
fun resolveClass(javaClass: JavaClass): ClassDescriptor?
|
fun resolveClass(javaClass: JavaClass): ClassDescriptor?
|
||||||
fun resolveClassByFqName(fqName: FqName): ClassDescriptor?
|
|
||||||
}
|
}
|
||||||
|
|
||||||
trait TypeParameterResolver {
|
trait TypeParameterResolver {
|
||||||
|
|||||||
Reference in New Issue
Block a user