Delete InjectorForJDR.getPsiClassFinder()
Replace its usages by getJavaClassFinder(). Remove code duplication in AnalyzerFacadeForJVM/LazyResolveTestUtil
This commit is contained in:
+6
-6
@@ -106,7 +106,7 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
this.javaPropertyResolver = new JavaPropertyResolver();
|
this.javaPropertyResolver = new JavaPropertyResolver();
|
||||||
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
this.javaSupertypeResolver = new JavaSupertypeResolver();
|
||||||
|
|
||||||
javaClassFinder.setPsiClassFinder(psiClassFinder);
|
this.javaClassFinder.setPsiClassFinder(psiClassFinder);
|
||||||
|
|
||||||
traceBasedExternalSignatureResolver.setAnnotationResolver(javaAnnotationResolver);
|
traceBasedExternalSignatureResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||||
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
traceBasedExternalSignatureResolver.setTrace(bindingTrace);
|
||||||
@@ -121,7 +121,7 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
|
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
|
||||||
this.javaDescriptorResolver.setNamespaceResolver(javaNamespaceResolver);
|
this.javaDescriptorResolver.setNamespaceResolver(javaNamespaceResolver);
|
||||||
|
|
||||||
this.psiClassFinder.setProject(project);
|
psiClassFinder.setProject(project);
|
||||||
|
|
||||||
virtualFileKotlinClassFinder.setVirtualFileFinder(virtualFileFinder);
|
virtualFileKotlinClassFinder.setVirtualFileFinder(virtualFileFinder);
|
||||||
|
|
||||||
@@ -202,12 +202,12 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
public void destroy() {
|
public void destroy() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public JavaClassFinderImpl getJavaClassFinder() {
|
||||||
|
return this.javaClassFinder;
|
||||||
|
}
|
||||||
|
|
||||||
public JavaDescriptorResolver getJavaDescriptorResolver() {
|
public JavaDescriptorResolver getJavaDescriptorResolver() {
|
||||||
return this.javaDescriptorResolver;
|
return this.javaDescriptorResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PsiClassFinderImpl getPsiClassFinder() {
|
|
||||||
return this.psiClassFinder;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+15
-6
@@ -81,32 +81,41 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
|
public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection<JetFile> files) {
|
||||||
BindingTraceContext javaResolverTrace = new BindingTraceContext();
|
BindingTraceContext javaResolverTrace = new BindingTraceContext();
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(fileProject, javaResolverTrace);
|
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(fileProject, javaResolverTrace);
|
||||||
|
return createLazyResolveSession(fileProject, files, javaResolverTrace, injector, true);
|
||||||
|
}
|
||||||
|
|
||||||
final PsiClassFinder psiClassFinder = injector.getPsiClassFinder();
|
@NotNull
|
||||||
|
public static ResolveSession createLazyResolveSession(
|
||||||
|
@NotNull Project project,
|
||||||
|
@NotNull Collection<JetFile> files,
|
||||||
|
@NotNull BindingTrace trace,
|
||||||
|
@NotNull InjectorForJavaDescriptorResolver injector,
|
||||||
|
final boolean addBuiltIns
|
||||||
|
) {
|
||||||
|
final JavaClassFinderImpl classFinder = injector.getJavaClassFinder();
|
||||||
|
|
||||||
// TODO: Replace with stub declaration provider
|
// TODO: Replace with stub declaration provider
|
||||||
LockBasedLazyResolveStorageManager storageManager = new LockBasedLazyResolveStorageManager();
|
LockBasedLazyResolveStorageManager storageManager = new LockBasedLazyResolveStorageManager();
|
||||||
FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(storageManager, files, new Predicate<FqName>() {
|
FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(storageManager, files, new Predicate<FqName>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(FqName fqName) {
|
public boolean apply(FqName fqName) {
|
||||||
return psiClassFinder.findPsiPackage(fqName) != null || new FqName("jet").equals(fqName);
|
return classFinder.findPackage(fqName) != null || KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
final JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
final JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
||||||
|
|
||||||
ModuleConfiguration moduleConfiguration = new ModuleConfiguration() {
|
ModuleConfiguration moduleConfiguration = new ModuleConfiguration() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void extendNamespaceScope(
|
public void extendNamespaceScope(
|
||||||
@NotNull NamespaceDescriptor namespaceDescriptor,
|
@NotNull NamespaceDescriptor namespaceDescriptor,
|
||||||
@NotNull WritableScope namespaceMemberScope
|
@NotNull WritableScope namespaceMemberScope
|
||||||
) {
|
) {
|
||||||
FqName fqName = DescriptorUtils.getFQName(namespaceDescriptor).toSafe();
|
FqName fqName = DescriptorUtils.getFQName(namespaceDescriptor).toSafe();
|
||||||
if (new FqName("jet").equals(fqName)) {
|
if (KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName) && addBuiltIns) {
|
||||||
namespaceMemberScope.importScope(KotlinBuiltIns.getInstance().getBuiltInsScope());
|
namespaceMemberScope.importScope(KotlinBuiltIns.getInstance().getBuiltInsScope());
|
||||||
}
|
}
|
||||||
if (psiClassFinder.findPsiPackage(fqName) != null) {
|
if (classFinder.findPackage(fqName) != null) {
|
||||||
JetScope javaPackageScope = javaDescriptorResolver.getJavaPackageScope(namespaceDescriptor);
|
JetScope javaPackageScope = javaDescriptorResolver.getJavaPackageScope(namespaceDescriptor);
|
||||||
assert javaPackageScope != null;
|
assert javaPackageScope != null;
|
||||||
namespaceMemberScope.importScope(javaPackageScope);
|
namespaceMemberScope.importScope(javaPackageScope);
|
||||||
@@ -117,7 +126,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
ModuleDescriptorImpl lazyModule = createJavaModule("<lazy module>");
|
ModuleDescriptorImpl lazyModule = createJavaModule("<lazy module>");
|
||||||
lazyModule.setModuleConfiguration(moduleConfiguration);
|
lazyModule.setModuleConfiguration(moduleConfiguration);
|
||||||
|
|
||||||
return new ResolveSession(fileProject, storageManager, lazyModule, declarationProviderFactory, javaResolverTrace);
|
return new ResolveSession(project, storageManager, lazyModule, declarationProviderFactory, trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AnalyzeExhaust analyzeOneFileWithJavaIntegrationAndCheckForErrors(
|
public static AnalyzeExhaust analyzeOneFileWithJavaIntegrationAndCheckForErrors(
|
||||||
|
|||||||
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.lazy;
|
package org.jetbrains.jet.lang.resolve.lazy;
|
||||||
|
|
||||||
import com.google.common.base.Predicate;
|
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
@@ -28,28 +27,17 @@ import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
|
|||||||
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
|
||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
|
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
|
||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
||||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetNamespaceHeader;
|
import org.jetbrains.jet.lang.psi.JetNamespaceHeader;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||||
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
|
||||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
||||||
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.PsiClassFinder;
|
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
|
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedLazyResolveStorageManager;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -87,44 +75,14 @@ public class LazyResolveTestUtil {
|
|||||||
return module;
|
return module;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static KotlinCodeAnalyzer resolveLazilyWithSession(List<JetFile> files, JetCoreEnvironment environment, final boolean addBuiltIns) {
|
public static KotlinCodeAnalyzer resolveLazilyWithSession(List<JetFile> files, JetCoreEnvironment environment, boolean addBuiltIns) {
|
||||||
JetTestUtils.newTrace(environment);
|
JetTestUtils.newTrace(environment);
|
||||||
|
|
||||||
Project project = environment.getProject();
|
Project project = environment.getProject();
|
||||||
BindingTrace sharedTrace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace();
|
BindingTrace sharedTrace = CliLightClassGenerationSupport.getInstanceForCli(project).getTrace();
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, sharedTrace);
|
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, sharedTrace);
|
||||||
final PsiClassFinder psiClassFinder = injector.getPsiClassFinder();
|
|
||||||
final JavaDescriptorResolver javaDescriptorResolver = injector.getJavaDescriptorResolver();
|
|
||||||
|
|
||||||
LockBasedLazyResolveStorageManager storageManager = new LockBasedLazyResolveStorageManager();
|
return AnalyzerFacadeForJVM.createLazyResolveSession(project, files, sharedTrace, injector, addBuiltIns);
|
||||||
FileBasedDeclarationProviderFactory declarationProviderFactory = new FileBasedDeclarationProviderFactory(storageManager, files, new Predicate<FqName>() {
|
|
||||||
@Override
|
|
||||||
public boolean apply(FqName fqName) {
|
|
||||||
return psiClassFinder.findPsiPackage(fqName) != null || new FqName("jet").equals(fqName);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
ModuleConfiguration moduleConfiguration = new ModuleConfiguration() {
|
|
||||||
@Override
|
|
||||||
public void extendNamespaceScope(
|
|
||||||
@NotNull NamespaceDescriptor namespaceDescriptor,
|
|
||||||
@NotNull WritableScope namespaceMemberScope
|
|
||||||
) {
|
|
||||||
FqName fqName = DescriptorUtils.getFQName(namespaceDescriptor).toSafe();
|
|
||||||
if (KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME.equals(fqName) && addBuiltIns) {
|
|
||||||
namespaceMemberScope.importScope(KotlinBuiltIns.getInstance().getBuiltInsScope());
|
|
||||||
}
|
|
||||||
if (psiClassFinder.findPsiPackage(fqName) != null) {
|
|
||||||
JetScope javaPackageScope = javaDescriptorResolver.getJavaPackageScope(namespaceDescriptor);
|
|
||||||
assert javaPackageScope != null;
|
|
||||||
namespaceMemberScope.importScope(javaPackageScope);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
ModuleDescriptorImpl lazyModule = AnalyzerFacadeForJVM.createJavaModule("<lazy module>");
|
|
||||||
lazyModule.setModuleConfiguration(moduleConfiguration);
|
|
||||||
return new ResolveSession(project, storageManager, lazyModule, declarationProviderFactory, sharedTrace);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ModuleDescriptor resolveLazily(List<JetFile> files, JetCoreEnvironment environment) {
|
public static ModuleDescriptor resolveLazily(List<JetFile> files, JetCoreEnvironment environment) {
|
||||||
|
|||||||
@@ -29,6 +29,8 @@ import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo;
|
|||||||
import org.jetbrains.jet.lang.resolve.calls.context.ExpressionPosition;
|
import org.jetbrains.jet.lang.resolve.calls.context.ExpressionPosition;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
|
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResults;
|
import org.jetbrains.jet.lang.resolve.calls.results.OverloadResolutionResults;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaClassImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
|
||||||
@@ -43,6 +45,7 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import static com.intellij.testFramework.UsefulTestCase.assertInstanceOf;
|
||||||
import static org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils.resolveFakeCall;
|
import static org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils.resolveFakeCall;
|
||||||
|
|
||||||
public class JetExpectedResolveDataUtil {
|
public class JetExpectedResolveDataUtil {
|
||||||
@@ -114,9 +117,10 @@ public class JetExpectedResolveDataUtil {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private static PsiClass findClass(String qualifiedName, Project project) {
|
private static PsiClass findClass(String qualifiedName, Project project) {
|
||||||
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, new BindingTraceContext());
|
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, new BindingTraceContext());
|
||||||
PsiClass psiClass = injector.getPsiClassFinder().findPsiClass(new FqName(qualifiedName));
|
JavaClass javaClass = injector.getJavaClassFinder().findClass(new FqName(qualifiedName));
|
||||||
Assert.assertNotNull("Class wasn't found: " + qualifiedName, psiClass);
|
Assert.assertNotNull("Class wasn't found: " + qualifiedName, javaClass);
|
||||||
return psiClass;
|
assertInstanceOf(javaClass, JavaClassImpl.class);
|
||||||
|
return ((JavaClassImpl) javaClass).getPsi();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
|||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.*;
|
import org.jetbrains.jet.lang.resolve.*;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CompositeExtension;
|
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||||
|
import org.jetbrains.jet.lang.resolve.calls.CompositeExtension;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
|
import org.jetbrains.jet.lang.resolve.java.JavaBridgeConfiguration;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
@@ -149,14 +149,14 @@ public class GenerateInjectors {
|
|||||||
generator.addParameter(BindingTrace.class);
|
generator.addParameter(BindingTrace.class);
|
||||||
|
|
||||||
// Fields
|
// Fields
|
||||||
generator.addField(JavaClassFinderImpl.class);
|
generator.addPublicField(JavaClassFinderImpl.class);
|
||||||
generator.addField(TraceBasedExternalSignatureResolver.class);
|
generator.addField(TraceBasedExternalSignatureResolver.class);
|
||||||
generator.addField(TraceBasedJavaResolverCache.class);
|
generator.addField(TraceBasedJavaResolverCache.class);
|
||||||
generator.addField(TraceBasedErrorReporter.class);
|
generator.addField(TraceBasedErrorReporter.class);
|
||||||
generator.addField(PsiBasedMethodSignatureChecker.class);
|
generator.addField(PsiBasedMethodSignatureChecker.class);
|
||||||
generator.addField(PsiBasedExternalAnnotationResolver.class);
|
generator.addField(PsiBasedExternalAnnotationResolver.class);
|
||||||
generator.addPublicField(JavaDescriptorResolver.class);
|
generator.addPublicField(JavaDescriptorResolver.class);
|
||||||
generator.addPublicField(PsiClassFinderImpl.class);
|
generator.addField(PsiClassFinderImpl.class);
|
||||||
generator.addField(VirtualFileKotlinClassFinder.class);
|
generator.addField(VirtualFileKotlinClassFinder.class);
|
||||||
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
generator.addField(false, VirtualFileFinder.class, "virtualFileFinder",
|
||||||
new GivenExpression("com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class)"));
|
new GivenExpression("com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class)"));
|
||||||
|
|||||||
Reference in New Issue
Block a user