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.setOverrideResolver(overrideResolver);
this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider);
this.topDownAnalyzer.setProject(project);
this.topDownAnalyzer.setScriptHeaderResolver(scriptHeaderResolver);
this.topDownAnalyzer.setTrace(bindingTrace);
this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver);
@@ -145,6 +145,7 @@ public class InjectorForTopDownAnalyzerBasic {
this.topDownAnalyzer.setOverloadResolver(overloadResolver);
this.topDownAnalyzer.setOverrideResolver(overrideResolver);
this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider);
this.topDownAnalyzer.setProject(project);
this.topDownAnalyzer.setScriptHeaderResolver(scriptHeaderResolver);
this.topDownAnalyzer.setTrace(bindingTrace);
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.Multimap;
import com.google.common.collect.Sets;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import kotlin.Function1;
import kotlin.KotlinPackage;
@@ -76,6 +77,8 @@ public class TopDownAnalyzer {
private BodyResolver bodyResolver;
@NotNull
private ScriptHeaderResolver scriptHeaderResolver;
@NotNull
private Project project;
@Inject
public void setTrace(@NotNull BindingTrace trace) {
@@ -122,6 +125,11 @@ public class TopDownAnalyzer {
this.scriptHeaderResolver = scriptHeaderResolver;
}
@Inject
public void setProject(@NotNull Project project) {
this.project = project;
}
public void doProcess(
@NotNull final TopDownAnalysisContext c,
@NotNull JetScope outerScope,
@@ -133,7 +141,7 @@ public class TopDownAnalyzer {
if (LAZY && !c.getTopDownAnalysisParameters().isDeclaredLocally()) {
final ResolveSession resolveSession = new InjectorForLazyResolve(
declarations.iterator().next().getProject(), // TODO
project,
new GlobalContextImpl((LockBasedStorageManager) c.getStorageManager(), c.getExceptionTracker()), // TODO
(ModuleDescriptorImpl) moduleDescriptor, // TODO
new FileBasedDeclarationProviderFactory(c.getStorageManager(), getFiles(declarations)),
@@ -145,6 +145,7 @@ public class InjectorForTopDownAnalyzerForJs {
this.topDownAnalyzer.setOverloadResolver(overloadResolver);
this.topDownAnalyzer.setOverrideResolver(overrideResolver);
this.topDownAnalyzer.setPackageFragmentProvider(mutablePackageFragmentProvider);
this.topDownAnalyzer.setProject(project);
this.topDownAnalyzer.setScriptHeaderResolver(scriptHeaderResolver);
this.topDownAnalyzer.setTrace(bindingTrace);
this.topDownAnalyzer.setTypeHierarchyResolver(typeHierarchyResolver);