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:
+3
-8
@@ -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);
|
||||
|
||||
+3
-8
@@ -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);
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+2
-10
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user