From 4153182fd254c54f181252043249d5978e9f3ff7 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 7 Feb 2014 14:10:11 +0400 Subject: [PATCH] Refactor JDR: minor, extract class --- .../resolve/java/JavaDescriptorResolver.java | 22 +++---------------- .../jet/lang/resolve/java/lazy/resolvers.kt | 15 +++++++++++++ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index 2d1042c5f10..16342f30ba8 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -22,10 +22,9 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor; import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; -import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaClassResolver; +import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaClassResolverWithCache; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.resolver.*; -import org.jetbrains.jet.lang.resolve.java.structure.JavaClass; import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver; import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder; import org.jetbrains.jet.lang.resolve.name.FqName; @@ -46,7 +45,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes ExternalSignatureResolver externalSignatureResolver, ErrorReporter errorReporter, MethodSignatureChecker signatureChecker, - final JavaResolverCache javaResolverCache, + JavaResolverCache javaResolverCache, DeserializedDescriptorResolver deserializedDescriptorResolver, KotlinClassFinder kotlinClassFinder, ModuleDescriptor module @@ -58,22 +57,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes javaClassFinder, kotlinClassFinder, deserializedDescriptorResolver, - new LazyJavaClassResolver() { - @Override - public ClassDescriptor resolveClass(JavaClass aClass) { - FqName fqName = aClass.getFqName(); - if (fqName != null) { - return resolveClassByFqName(fqName); - } - - return null; - } - - @Override - public ClassDescriptor resolveClassByFqName(FqName fqName) { - return javaResolverCache.getClassResolvedFromSource(fqName); - } - }, + new LazyJavaClassResolverWithCache(javaResolverCache), externalAnnotationResolver, externalSignatureResolver, errorReporter, 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 14f226f710e..e298dc1bde3 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 @@ -26,12 +26,27 @@ import org.jetbrains.jet.lang.resolve.name.FqName import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader.Kind import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils +import org.jetbrains.jet.lang.resolve.java.resolver.JavaResolverCache trait LazyJavaClassResolver { fun resolveClass(javaClass: JavaClass): ClassDescriptor? fun resolveClassByFqName(fqName: FqName): ClassDescriptor? } +class LazyJavaClassResolverWithCache(val javaResolverCache: JavaResolverCache) : LazyJavaClassResolver { + override fun resolveClass(javaClass: JavaClass): ClassDescriptor? { + val fqName = javaClass.getFqName() + if (fqName != null) { + return resolveClassByFqName(fqName) + } + return null + } + + override fun resolveClassByFqName(fqName: FqName): ClassDescriptor? { + return javaResolverCache.getClassResolvedFromSource(fqName) + } +} + trait TypeParameterResolver { class object { object EMPTY : TypeParameterResolver {