From 7d9742417f3fdfce22109de90c7e601a5d1f1bbe Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 2 Jun 2014 19:53:03 +0400 Subject: [PATCH] JDR: Remove LazyJavaClassResolver#resolveClassByFqName() --- .../lazy/LazyJavaPackageFragmentProvider.kt | 37 +++++++++---------- .../jet/lang/resolve/java/lazy/resolvers.kt | 1 - 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt index 9db7c8c16d0..1a7d2d403b0 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt @@ -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 - } } } \ No newline at end of file diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/resolvers.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/resolvers.kt index 7c9e339e608..b09393657e6 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/resolvers.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/resolvers.kt @@ -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 {