Inject a project into TDA for proper lazy session initialization

This commit is contained in:
Andrey Breslav
2014-03-25 22:19:34 +04:00
parent 4b5a192e4c
commit df1f0886c5
4 changed files with 12 additions and 1 deletions
@@ -191,6 +191,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.topDownAnalyzer.setOverloadResolver(overloadResolver); this.topDownAnalyzer.setOverloadResolver(overloadResolver);
this.topDownAnalyzer.setOverrideResolver(overrideResolver); this.topDownAnalyzer.setOverrideResolver(overrideResolver);
this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider); this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider);
this.topDownAnalyzer.setProject(project);
this.topDownAnalyzer.setScriptHeaderResolver(scriptHeaderResolver); this.topDownAnalyzer.setScriptHeaderResolver(scriptHeaderResolver);
this.topDownAnalyzer.setTrace(bindingTrace); this.topDownAnalyzer.setTrace(bindingTrace);
this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver); this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver);
@@ -145,6 +145,7 @@ public class InjectorForTopDownAnalyzerBasic {
this.topDownAnalyzer.setOverloadResolver(overloadResolver); this.topDownAnalyzer.setOverloadResolver(overloadResolver);
this.topDownAnalyzer.setOverrideResolver(overrideResolver); this.topDownAnalyzer.setOverrideResolver(overrideResolver);
this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider); this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider);
this.topDownAnalyzer.setProject(project);
this.topDownAnalyzer.setScriptHeaderResolver(scriptHeaderResolver); this.topDownAnalyzer.setScriptHeaderResolver(scriptHeaderResolver);
this.topDownAnalyzer.setTrace(bindingTrace); this.topDownAnalyzer.setTrace(bindingTrace);
this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver); this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver);
@@ -20,6 +20,7 @@ import com.google.common.base.Predicates;
import com.google.common.collect.HashMultimap; import com.google.common.collect.HashMultimap;
import com.google.common.collect.Multimap; import com.google.common.collect.Multimap;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import kotlin.Function1; import kotlin.Function1;
import kotlin.KotlinPackage; import kotlin.KotlinPackage;
@@ -76,6 +77,8 @@ public class TopDownAnalyzer {
private BodyResolver bodyResolver; private BodyResolver bodyResolver;
@NotNull @NotNull
private ScriptHeaderResolver scriptHeaderResolver; private ScriptHeaderResolver scriptHeaderResolver;
@NotNull
private Project project;
@Inject @Inject
public void setTrace(@NotNull BindingTrace trace) { public void setTrace(@NotNull BindingTrace trace) {
@@ -122,6 +125,11 @@ public class TopDownAnalyzer {
this.scriptHeaderResolver = scriptHeaderResolver; this.scriptHeaderResolver = scriptHeaderResolver;
} }
@Inject
public void setProject(@NotNull Project project) {
this.project = project;
}
public void doProcess( public void doProcess(
@NotNull final TopDownAnalysisContext c, @NotNull final TopDownAnalysisContext c,
@NotNull JetScope outerScope, @NotNull JetScope outerScope,
@@ -133,7 +141,7 @@ public class TopDownAnalyzer {
if (LAZY && !c.getTopDownAnalysisParameters().isDeclaredLocally()) { if (LAZY && !c.getTopDownAnalysisParameters().isDeclaredLocally()) {
final ResolveSession resolveSession = new InjectorForLazyResolve( final ResolveSession resolveSession = new InjectorForLazyResolve(
declarations.iterator().next().getProject(), // TODO project,
new GlobalContextImpl((LockBasedStorageManager) c.getStorageManager(), c.getExceptionTracker()), // TODO new GlobalContextImpl((LockBasedStorageManager) c.getStorageManager(), c.getExceptionTracker()), // TODO
(ModuleDescriptorImpl) moduleDescriptor, // TODO (ModuleDescriptorImpl) moduleDescriptor, // TODO
new FileBasedDeclarationProviderFactory(c.getStorageManager(), getFiles(declarations)), new FileBasedDeclarationProviderFactory(c.getStorageManager(), getFiles(declarations)),
@@ -145,6 +145,7 @@ public class InjectorForTopDownAnalyzerForJs {
this.topDownAnalyzer.setOverloadResolver(overloadResolver); this.topDownAnalyzer.setOverloadResolver(overloadResolver);
this.topDownAnalyzer.setOverrideResolver(overrideResolver); this.topDownAnalyzer.setOverrideResolver(overrideResolver);
this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider); this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider);
this.topDownAnalyzer.setProject(project);
this.topDownAnalyzer.setScriptHeaderResolver(scriptHeaderResolver); this.topDownAnalyzer.setScriptHeaderResolver(scriptHeaderResolver);
this.topDownAnalyzer.setTrace(bindingTrace); this.topDownAnalyzer.setTrace(bindingTrace);
this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver); this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver);