VirtualFileFinder and KotlinClassFinder effectively merged (through inheritance)

This is needed to implement caching of KotlinJvmBinaryClass instance inside CliVirtualFileFinder that relies on reading class headers for filtering
This commit is contained in:
Andrey Breslav
2014-01-07 00:54:26 +04:00
parent 8fcaf511dc
commit 6c1f579c6d
7 changed files with 16 additions and 35 deletions
@@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClassFinder;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProviderImpl;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
@@ -57,7 +56,6 @@ public class InjectorForJavaDescriptorResolver {
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
private final JavaDescriptorResolver javaDescriptorResolver;
private final VirtualFileKotlinClassFinder virtualFileKotlinClassFinder;
private final JavaPackageFragmentProviderImpl javaPackageFragmentProvider;
private final VirtualFileFinder virtualFileFinder;
private final ModuleDescriptorImpl module;
@@ -88,7 +86,6 @@ public class InjectorForJavaDescriptorResolver {
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
this.javaDescriptorResolver = new JavaDescriptorResolver();
this.virtualFileKotlinClassFinder = new VirtualFileKotlinClassFinder();
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
@@ -121,13 +118,11 @@ public class InjectorForJavaDescriptorResolver {
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
this.javaDescriptorResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
virtualFileKotlinClassFinder.setVirtualFileFinder(virtualFileFinder);
javaPackageFragmentProvider.setCache(traceBasedJavaResolverCache);
javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver);
javaPackageFragmentProvider.setKotlinClassFinder(virtualFileKotlinClassFinder);
javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder);
javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
javaPackageFragmentProvider.setModule(module);
@@ -144,7 +139,7 @@ public class InjectorForJavaDescriptorResolver {
javaClassResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
javaClassResolver.setFunctionResolver(javaFunctionResolver);
javaClassResolver.setJavaClassFinder(javaClassFinder);
javaClassResolver.setKotlinClassFinder(virtualFileKotlinClassFinder);
javaClassResolver.setKotlinClassFinder(virtualFileFinder);
javaClassResolver.setMemberResolver(javaMemberResolver);
javaClassResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
@@ -157,7 +152,7 @@ public class InjectorForJavaDescriptorResolver {
annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileKotlinClassFinder);
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
@@ -35,7 +35,6 @@ import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClassFinder;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.NamespaceFactoryImpl;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProviderImpl;
@@ -96,7 +95,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
private final TraceBasedErrorReporter traceBasedErrorReporter;
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
private final VirtualFileKotlinClassFinder virtualFileKotlinClassFinder;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final NamespaceFactoryImpl namespaceFactory;
private final JavaPackageFragmentProviderImpl javaPackageFragmentProvider;
@@ -158,7 +156,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
this.virtualFileKotlinClassFinder = new VirtualFileKotlinClassFinder();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.namespaceFactory = new NamespaceFactoryImpl();
this.javaPackageFragmentProvider = new JavaPackageFragmentProviderImpl();
@@ -245,8 +242,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver);
psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
virtualFileKotlinClassFinder.setVirtualFileFinder(virtualFileFinder);
namespaceFactory.setModule(moduleDescriptor);
namespaceFactory.setPackageFragmentProvider(mutablePackageFragmentProvider);
namespaceFactory.setTrace(bindingTrace);
@@ -255,7 +250,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.javaPackageFragmentProvider.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
this.javaPackageFragmentProvider.setJavaClassFinder(javaClassFinder);
this.javaPackageFragmentProvider.setJavaDescriptorResolver(javaDescriptorResolver);
this.javaPackageFragmentProvider.setKotlinClassFinder(virtualFileKotlinClassFinder);
this.javaPackageFragmentProvider.setKotlinClassFinder(virtualFileFinder);
this.javaPackageFragmentProvider.setMemberResolver(javaMemberResolver);
this.javaPackageFragmentProvider.setModule(moduleDescriptor);
@@ -335,7 +330,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
javaClassResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
javaClassResolver.setFunctionResolver(javaFunctionResolver);
javaClassResolver.setJavaClassFinder(javaClassFinder);
javaClassResolver.setKotlinClassFinder(virtualFileKotlinClassFinder);
javaClassResolver.setKotlinClassFinder(virtualFileFinder);
javaClassResolver.setMemberResolver(javaMemberResolver);
javaClassResolver.setPackageFragmentProvider(javaPackageFragmentProvider);
javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
@@ -358,7 +353,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileKotlinClassFinder);
annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
javaFunctionResolver.setCache(traceBasedJavaResolverCache);
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.name.FqName;
public interface VirtualFileFinder {
public interface VirtualFileFinder extends KotlinClassFinder {
// TODO: support scope
@Nullable
VirtualFile findVirtualFile(@NotNull FqName className);
@@ -21,20 +21,12 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.name.FqName;
import javax.inject.Inject;
public class VirtualFileKotlinClassFinder implements KotlinClassFinder {
private VirtualFileFinder virtualFileFinder;
@Inject
public void setVirtualFileFinder(@NotNull VirtualFileFinder virtualFileFinder) {
this.virtualFileFinder = virtualFileFinder;
}
public abstract class VirtualFileKotlinClassFinder implements VirtualFileFinder {
@Nullable
@Override
public KotlinJvmBinaryClass findKotlinClass(@NotNull FqName fqName) {
VirtualFile file = virtualFileFinder.findVirtualFile(fqName);
VirtualFile file = findVirtualFile(fqName);
return file == null ? null : new VirtualFileKotlinClass(file);
}
}