Make an abstraction over VirtualFileFinder

Java descriptor loader now can work with KotlinClassFinder, which finds
abstract KotlinJvmBinaryClass'es: they are based on VirtualFile in the
compiler/IDE and will be based on j.l.Class in the reflection
This commit is contained in:
Alexander Udalov
2013-09-20 21:21:16 +04:00
parent c5bed7a246
commit 7eff1292f0
12 changed files with 218 additions and 67 deletions
@@ -41,6 +41,7 @@ import org.jetbrains.jet.lang.resolve.java.PsiClassFinderImpl;
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.java.resolver.*;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClassFinder;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
@@ -130,6 +131,7 @@ public class GenerateInjectors {
generator.addField(TraceBasedErrorReporter.class);
generator.addField(PsiBasedMethodSignatureChecker.class);
generator.addField(PsiBasedExternalAnnotationResolver.class);
generator.addField(VirtualFileKotlinClassFinder.class);
generator.addPublicField(NamespaceFactoryImpl.class);
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
new GivenExpression(
@@ -155,6 +157,7 @@ public class GenerateInjectors {
generator.addField(PsiBasedExternalAnnotationResolver.class);
generator.addPublicField(JavaDescriptorResolver.class);
generator.addPublicField(PsiClassFinderImpl.class);
generator.addField(VirtualFileKotlinClassFinder.class);
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
new GivenExpression("com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class)"));