Refactor JDR: minor, extract class

This commit is contained in:
Pavel V. Talanov
2014-02-07 14:10:11 +04:00
parent 37154e42d2
commit 4153182fd2
2 changed files with 18 additions and 19 deletions
@@ -22,10 +22,9 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor; import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; 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.lazy.LazyJavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.resolver.*; 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.DeserializedDescriptorResolver;
import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder; import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -46,7 +45,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
ExternalSignatureResolver externalSignatureResolver, ExternalSignatureResolver externalSignatureResolver,
ErrorReporter errorReporter, ErrorReporter errorReporter,
MethodSignatureChecker signatureChecker, MethodSignatureChecker signatureChecker,
final JavaResolverCache javaResolverCache, JavaResolverCache javaResolverCache,
DeserializedDescriptorResolver deserializedDescriptorResolver, DeserializedDescriptorResolver deserializedDescriptorResolver,
KotlinClassFinder kotlinClassFinder, KotlinClassFinder kotlinClassFinder,
ModuleDescriptor module ModuleDescriptor module
@@ -58,22 +57,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
javaClassFinder, javaClassFinder,
kotlinClassFinder, kotlinClassFinder,
deserializedDescriptorResolver, deserializedDescriptorResolver,
new LazyJavaClassResolver() { new LazyJavaClassResolverWithCache(javaResolverCache),
@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);
}
},
externalAnnotationResolver, externalAnnotationResolver,
externalSignatureResolver, externalSignatureResolver,
errorReporter, errorReporter,
@@ -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
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader.Kind 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.DescriptorResolverUtils
import org.jetbrains.jet.lang.resolve.java.resolver.JavaResolverCache
trait LazyJavaClassResolver { trait LazyJavaClassResolver {
fun resolveClass(javaClass: JavaClass): ClassDescriptor? fun resolveClass(javaClass: JavaClass): ClassDescriptor?
fun resolveClassByFqName(fqName: FqName): 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 { trait TypeParameterResolver {
class object { class object {
object EMPTY : TypeParameterResolver { object EMPTY : TypeParameterResolver {