Centralize and cache creating import directives
This commit is contained in:
@@ -93,7 +93,6 @@ public class InjectorForJavaDescriptorResolver {
|
||||
this.javaPropertyResolver = new JavaPropertyResolver();
|
||||
|
||||
javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices);
|
||||
javaBridgeConfiguration.setProject(project);
|
||||
|
||||
this.javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
|
||||
this.javaSemanticServices.setPsiClassFinder(psiClassFinder);
|
||||
|
||||
@@ -104,7 +104,6 @@ public class InjectorForJavaSemanticServices {
|
||||
this.javaDescriptorResolver.setPropertiesResolver(javaPropertyResolver);
|
||||
|
||||
javaBridgeConfiguration.setJavaSemanticServices(javaSemanticServices);
|
||||
javaBridgeConfiguration.setProject(project);
|
||||
|
||||
this.psiClassFinder.setProject(project);
|
||||
|
||||
|
||||
+6
-1
@@ -40,6 +40,7 @@ import org.jetbrains.jet.lang.resolve.TypeResolver;
|
||||
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
|
||||
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
|
||||
import org.jetbrains.jet.lang.resolve.ImportsResolver;
|
||||
import org.jetbrains.jet.lang.psi.JetPsiBuilder;
|
||||
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverloadResolver;
|
||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||
@@ -89,6 +90,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
private QualifiedExpressionResolver qualifiedExpressionResolver;
|
||||
private CandidateResolver candidateResolver;
|
||||
private ImportsResolver importsResolver;
|
||||
private JetPsiBuilder jetPsiBuilder;
|
||||
private ScriptHeaderResolver scriptHeaderResolver;
|
||||
private OverloadResolver overloadResolver;
|
||||
private OverrideResolver overrideResolver;
|
||||
@@ -139,6 +141,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
||||
this.candidateResolver = new CandidateResolver();
|
||||
this.importsResolver = new ImportsResolver();
|
||||
this.jetPsiBuilder = new JetPsiBuilder();
|
||||
this.scriptHeaderResolver = new ScriptHeaderResolver();
|
||||
this.overloadResolver = new OverloadResolver();
|
||||
this.overrideResolver = new OverrideResolver();
|
||||
@@ -193,7 +196,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||
|
||||
this.moduleConfiguration.setJavaSemanticServices(javaSemanticServices);
|
||||
this.moduleConfiguration.setProject(project);
|
||||
|
||||
javaDescriptorResolver.setClassResolver(javaClassResolver);
|
||||
javaDescriptorResolver.setConstructorResolver(javaConstructorResolver);
|
||||
@@ -240,9 +242,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
|
||||
importsResolver.setConfiguration(moduleConfiguration);
|
||||
importsResolver.setContext(topDownAnalysisContext);
|
||||
importsResolver.setPsiBuilder(jetPsiBuilder);
|
||||
importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
|
||||
importsResolver.setTrace(bindingTrace);
|
||||
|
||||
jetPsiBuilder.setProject(project);
|
||||
|
||||
scriptHeaderResolver.setContext(topDownAnalysisContext);
|
||||
scriptHeaderResolver.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver);
|
||||
scriptHeaderResolver.setNamespaceFactory(namespaceFactory);
|
||||
|
||||
+6
-10
@@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.resolve.java;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -33,8 +34,6 @@ import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.psi.JetImportDirective;
|
||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||
import org.jetbrains.jet.lang.resolve.*;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.FileBasedDeclarationProviderFactory;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.LockBasedStorageManager;
|
||||
@@ -45,9 +44,9 @@ 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.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
|
||||
public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
@@ -103,13 +102,10 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
||||
|
||||
ModuleConfiguration moduleConfiguration = new ModuleConfiguration() {
|
||||
@Override
|
||||
public void addDefaultImports(@NotNull Collection<JetImportDirective> directives) {
|
||||
final Collection<ImportPath> defaultImports = Lists.newArrayList(JavaBridgeConfiguration.DEFAULT_JAVA_IMPORTS);
|
||||
defaultImports.addAll(Arrays.asList(DefaultModuleConfiguration.DEFAULT_JET_IMPORTS));
|
||||
|
||||
for (ImportPath defaultJetImport : defaultImports) {
|
||||
directives.add(JetPsiFactory.createImportDirective(fileProject, defaultJetImport));
|
||||
}
|
||||
public List<ImportPath> getDefaultImports() {
|
||||
LinkedHashSet<ImportPath> imports = Sets.newLinkedHashSet(JavaBridgeConfiguration.DEFAULT_JAVA_IMPORTS);
|
||||
imports.addAll(DefaultModuleConfiguration.DEFAULT_JET_IMPORTS);
|
||||
return Lists.newArrayList(imports);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+12
-20
@@ -16,14 +16,14 @@
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.java;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.DefaultModuleConfiguration;
|
||||
import org.jetbrains.jet.lang.ModuleConfiguration;
|
||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetImportDirective;
|
||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||
import org.jetbrains.jet.lang.resolve.ImportPath;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
@@ -31,22 +31,16 @@ import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.inject.Inject;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
public class JavaBridgeConfiguration implements ModuleConfiguration {
|
||||
|
||||
public static final ImportPath[] DEFAULT_JAVA_IMPORTS = new ImportPath[] { new ImportPath("java.lang.*") };
|
||||
public static final List<ImportPath> DEFAULT_JAVA_IMPORTS = ImmutableList.of(new ImportPath("java.lang.*"));
|
||||
|
||||
|
||||
private Project project;
|
||||
private JavaSemanticServices javaSemanticServices;
|
||||
private ModuleConfiguration delegateConfiguration;
|
||||
|
||||
@Inject
|
||||
public void setProject(@NotNull Project project) {
|
||||
this.project = project;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setJavaSemanticServices(@NotNull JavaSemanticServices javaSemanticServices) {
|
||||
this.javaSemanticServices = javaSemanticServices;
|
||||
@@ -54,17 +48,15 @@ public class JavaBridgeConfiguration implements ModuleConfiguration {
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
this.delegateConfiguration = DefaultModuleConfiguration.createStandardConfiguration(project);
|
||||
this.delegateConfiguration = DefaultModuleConfiguration.createStandardConfiguration();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void addDefaultImports(@NotNull Collection<JetImportDirective> directives) {
|
||||
for (ImportPath importPath : DEFAULT_JAVA_IMPORTS) {
|
||||
directives.add(JetPsiFactory.createImportDirective(project, importPath));
|
||||
}
|
||||
delegateConfiguration.addDefaultImports(directives);
|
||||
public List<ImportPath> getDefaultImports() {
|
||||
Set<ImportPath> imports = Sets.newLinkedHashSet(DEFAULT_JAVA_IMPORTS);
|
||||
imports.addAll(delegateConfiguration.getDefaultImports());
|
||||
|
||||
return Lists.newArrayList(imports);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user