Do not create TopDownAnalysisContext in injectors

This commit is contained in:
Andrey Breslav
2014-02-24 15:43:18 +04:00
parent f5d2e1f7aa
commit 4e0df6fd80
10 changed files with 21 additions and 46 deletions
@@ -318,7 +318,7 @@ public class ReplInterpreter {
return null; return null;
} }
ScriptDescriptor scriptDescriptor = injector.getTopDownAnalysisContext().getScripts().get(psiFile.getScript()); ScriptDescriptor scriptDescriptor = topDownAnalysisContext.getScripts().get(psiFile.getScript());
lastLineScope = trace.get(BindingContext.SCRIPT_SCOPE, scriptDescriptor); lastLineScope = trace.get(BindingContext.SCRIPT_SCOPE, scriptDescriptor);
if (lastLineScope == null) { if (lastLineScope == null) {
throw new IllegalStateException("last line scope is not initialized"); throw new IllegalStateException("last line scope is not initialized");
@@ -23,7 +23,6 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer; import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider; import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl; import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
@@ -78,7 +77,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
private final ModuleDescriptorImpl moduleDescriptor; private final ModuleDescriptorImpl moduleDescriptor;
private final PlatformToKotlinClassMap platformToKotlinClassMap; private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final TopDownAnalyzer topDownAnalyzer; private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider; private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final JavaDescriptorResolver javaDescriptorResolver; private final JavaDescriptorResolver javaDescriptorResolver;
private final JavaClassFinderImpl javaClassFinder; private final JavaClassFinderImpl javaClassFinder;
@@ -133,7 +131,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.moduleDescriptor = moduleDescriptor; this.moduleDescriptor = moduleDescriptor;
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.topDownAnalyzer = new TopDownAnalyzer(); this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext(topDownAnalysisParameters);
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor()); this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.javaClassFinder = new JavaClassFinderImpl(); this.javaClassFinder = new JavaClassFinderImpl();
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project); this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
@@ -232,7 +229,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils);
expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
expressionTypingComponents.setGlobalContext(topDownAnalysisContext); expressionTypingComponents.setGlobalContext(topDownAnalysisParameters);
expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices); forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices);
@@ -321,10 +318,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
return this.topDownAnalyzer; return this.topDownAnalyzer;
} }
public TopDownAnalysisContext getTopDownAnalysisContext() {
return this.topDownAnalysisContext;
}
public JavaDescriptorResolver getJavaDescriptorResolver() { public JavaDescriptorResolver getJavaDescriptorResolver() {
return this.javaDescriptorResolver; return this.javaDescriptorResolver;
} }
@@ -229,9 +229,9 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module); InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
try { try {
module.addFragmentProvider(DependencyKind.BINARIES, injector.getJavaDescriptorResolver().getPackageFragmentProvider()); module.addFragmentProvider(DependencyKind.BINARIES, injector.getJavaDescriptorResolver().getPackageFragmentProvider());
injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters); TopDownAnalysisContext topDownAnalysisContext = injector.getTopDownAnalyzer().analyzeFiles(files, scriptParameters);
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ? BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) : new CachedBodiesResolveContext(topDownAnalysisContext) :
null; null;
return AnalyzeExhaust.success(trace.getBindingContext(), bodiesResolveContext, module); return AnalyzeExhaust.success(trace.getBindingContext(), bodiesResolveContext, module);
} }
@@ -18,13 +18,11 @@ package org.jetbrains.jet.di;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
import org.jetbrains.jet.storage.ExceptionTracker;
import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.context.SimpleGlobalContext;
import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
@@ -53,13 +51,11 @@ public class InjectorForBodyResolve {
private final Project project; private final Project project;
private final TopDownAnalysisParameters topDownAnalysisParameters; private final TopDownAnalysisParameters topDownAnalysisParameters;
private final ExceptionTracker exceptionTracker;
private final StorageManager storageManager; private final StorageManager storageManager;
private final BindingTrace bindingTrace; private final BindingTrace bindingTrace;
private final ModuleDescriptor moduleDescriptor; private final ModuleDescriptor moduleDescriptor;
private final PlatformToKotlinClassMap platformToKotlinClassMap; private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final BodyResolver bodyResolver; private final BodyResolver bodyResolver;
private final SimpleGlobalContext simpleGlobalContext;
private final AnnotationResolver annotationResolver; private final AnnotationResolver annotationResolver;
private final CallResolver callResolver; private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver; private final ArgumentTypeResolver argumentTypeResolver;
@@ -88,13 +84,11 @@ public class InjectorForBodyResolve {
) { ) {
this.project = project; this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters; this.topDownAnalysisParameters = topDownAnalysisParameters;
this.exceptionTracker = topDownAnalysisParameters.getExceptionTracker();
this.storageManager = topDownAnalysisParameters.getStorageManager(); this.storageManager = topDownAnalysisParameters.getStorageManager();
this.bindingTrace = bindingTrace; this.bindingTrace = bindingTrace;
this.moduleDescriptor = moduleDescriptor; this.moduleDescriptor = moduleDescriptor;
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.bodyResolver = new BodyResolver(); this.bodyResolver = new BodyResolver();
this.simpleGlobalContext = new SimpleGlobalContext(storageManager, exceptionTracker);
this.annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver(); this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver(); this.argumentTypeResolver = new ArgumentTypeResolver();
@@ -150,7 +144,7 @@ public class InjectorForBodyResolve {
expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils);
expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
expressionTypingComponents.setGlobalContext(simpleGlobalContext); expressionTypingComponents.setGlobalContext(topDownAnalysisParameters);
expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices); forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices);
@@ -23,7 +23,6 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer; import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider; import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl; import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.BodyResolver;
@@ -67,7 +66,6 @@ public class InjectorForTopDownAnalyzerBasic {
private final ModuleDescriptorImpl moduleDescriptor; private final ModuleDescriptorImpl moduleDescriptor;
private final PlatformToKotlinClassMap platformToKotlinClassMap; private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final TopDownAnalyzer topDownAnalyzer; private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider; private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy; private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final BodyResolver bodyResolver; private final BodyResolver bodyResolver;
@@ -111,7 +109,6 @@ public class InjectorForTopDownAnalyzerBasic {
this.moduleDescriptor = moduleDescriptor; this.moduleDescriptor = moduleDescriptor;
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.topDownAnalyzer = new TopDownAnalyzer(); this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext(topDownAnalysisParameters);
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor()); this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl(); this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
this.bodyResolver = new BodyResolver(); this.bodyResolver = new BodyResolver();
@@ -187,7 +184,7 @@ public class InjectorForTopDownAnalyzerBasic {
expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils);
expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
expressionTypingComponents.setGlobalContext(topDownAnalysisContext); expressionTypingComponents.setGlobalContext(topDownAnalysisParameters);
expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices); forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices);
@@ -264,8 +261,4 @@ public class InjectorForTopDownAnalyzerBasic {
return this.topDownAnalyzer; return this.topDownAnalyzer;
} }
public TopDownAnalysisContext getTopDownAnalysisContext() {
return this.topDownAnalysisContext;
}
} }
@@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.resolve;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.context.GlobalContext;
import org.jetbrains.jet.storage.ExceptionTracker; import org.jetbrains.jet.storage.ExceptionTracker;
import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.storage.StorageManager;
@@ -27,7 +28,7 @@ import java.util.List;
/** /**
* Various junk that cannot be placed into context (yet). * Various junk that cannot be placed into context (yet).
*/ */
public class TopDownAnalysisParameters { public class TopDownAnalysisParameters implements GlobalContext {
@NotNull @NotNull
private final StorageManager storageManager; private final StorageManager storageManager;
@NotNull @NotNull
@@ -55,13 +56,13 @@ public class TopDownAnalysisParameters {
this.scriptParameters = scriptParameters; this.scriptParameters = scriptParameters;
} }
//@Override @Override
@NotNull @NotNull
public StorageManager getStorageManager() { public StorageManager getStorageManager() {
return storageManager; return storageManager;
} }
//@Override @Override
@NotNull @NotNull
public ExceptionTracker getExceptionTracker() { public ExceptionTracker getExceptionTracker() {
return exceptionTracker; return exceptionTracker;
@@ -216,7 +216,8 @@ public class TopDownAnalyzer {
); );
} }
public void analyzeFiles( @NotNull
public TopDownAnalysisContext analyzeFiles(
@NotNull Collection<JetFile> files, @NotNull Collection<JetFile> files,
@NotNull List<AnalyzerScriptParameter> scriptParameters) { @NotNull List<AnalyzerScriptParameter> scriptParameters) {
((ModuleDescriptorImpl) moduleDescriptor).addFragmentProvider(DependencyKind.SOURCES, packageFragmentProvider); ((ModuleDescriptorImpl) moduleDescriptor).addFragmentProvider(DependencyKind.SOURCES, packageFragmentProvider);
@@ -227,8 +228,10 @@ public class TopDownAnalyzer {
// dummy builder is used because "root" is module descriptor, // dummy builder is used because "root" is module descriptor,
// packages added to module explicitly in // packages added to module explicitly in
doProcess(new TopDownAnalysisContext(topDownAnalysisParameters), JetModuleUtil.getSubpackagesOfRootScope(moduleDescriptor), TopDownAnalysisContext c = new TopDownAnalysisContext(topDownAnalysisParameters);
doProcess(c, JetModuleUtil.getSubpackagesOfRootScope(moduleDescriptor),
new PackageLikeBuilderDummy(), files); new PackageLikeBuilderDummy(), files);
return c;
} }
@@ -69,8 +69,7 @@ private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() {
publicParameter(javaClass<ModuleDescriptorImpl>(), useAsContext = true) publicParameter(javaClass<ModuleDescriptorImpl>(), useAsContext = true)
publicFields( publicFields(
javaClass<TopDownAnalyzer>(), javaClass<TopDownAnalyzer>()
javaClass<TopDownAnalysisContext>()
) )
field(javaClass<MutablePackageFragmentProvider>()) field(javaClass<MutablePackageFragmentProvider>())
@@ -198,7 +197,6 @@ private fun generatorForBodyResolve() =
parameter(javaClass<ModuleDescriptor>(), useAsContext = true) parameter(javaClass<ModuleDescriptor>(), useAsContext = true)
publicField(javaClass<BodyResolver>()) publicField(javaClass<BodyResolver>())
field(javaClass<SimpleGlobalContext>())
} }
private fun generatorForLazyResolve() = private fun generatorForLazyResolve() =
@@ -23,7 +23,6 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer; import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider; import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl; import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.BodyResolver;
@@ -67,7 +66,6 @@ public class InjectorForTopDownAnalyzerForJs {
private final ModuleDescriptorImpl moduleDescriptor; private final ModuleDescriptorImpl moduleDescriptor;
private final PlatformToKotlinClassMap platformToKotlinClassMap; private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final TopDownAnalyzer topDownAnalyzer; private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider; private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy; private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final BodyResolver bodyResolver; private final BodyResolver bodyResolver;
@@ -111,7 +109,6 @@ public class InjectorForTopDownAnalyzerForJs {
this.moduleDescriptor = moduleDescriptor; this.moduleDescriptor = moduleDescriptor;
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.topDownAnalyzer = new TopDownAnalyzer(); this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext(topDownAnalysisParameters);
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor()); this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl(); this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
this.bodyResolver = new BodyResolver(); this.bodyResolver = new BodyResolver();
@@ -187,7 +184,7 @@ public class InjectorForTopDownAnalyzerForJs {
expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils);
expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
expressionTypingComponents.setGlobalContext(topDownAnalysisContext); expressionTypingComponents.setGlobalContext(topDownAnalysisParameters);
expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices); forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices);
@@ -264,8 +261,4 @@ public class InjectorForTopDownAnalyzerForJs {
return this.topDownAnalyzer; return this.topDownAnalyzer;
} }
public TopDownAnalysisContext getTopDownAnalysisContext() {
return this.topDownAnalysisContext;
}
} }
@@ -25,9 +25,9 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.analyzer.AnalyzeExhaust; import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything; import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything;
import org.jetbrains.jet.di.InjectorForLazyResolve;
import org.jetbrains.jet.context.ContextPackage; import org.jetbrains.jet.context.ContextPackage;
import org.jetbrains.jet.context.GlobalContextImpl; import org.jetbrains.jet.context.GlobalContextImpl;
import org.jetbrains.jet.di.InjectorForLazyResolve;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJs; import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJs;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.DependencyKind; import org.jetbrains.jet.lang.descriptors.DependencyKind;
@@ -37,7 +37,6 @@ import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.*;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
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.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.k2js.config.Config; import org.jetbrains.k2js.config.Config;
@@ -109,9 +108,10 @@ public final class AnalyzerFacadeForJS {
Collection<JetFile> allFiles = libraryModule != null ? Collection<JetFile> allFiles = libraryModule != null ?
files : files :
Config.withJsLibAdded(files, config); Config.withJsLibAdded(files, config);
injector.getTopDownAnalyzer().analyzeFiles(allFiles, Collections.<AnalyzerScriptParameter>emptyList()); TopDownAnalysisContext topDownAnalysisContext =
injector.getTopDownAnalyzer().analyzeFiles(allFiles, Collections.<AnalyzerScriptParameter>emptyList());
BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ? BodiesResolveContext bodiesResolveContext = storeContextForBodiesResolve ?
new CachedBodiesResolveContext(injector.getTopDownAnalysisContext()) : new CachedBodiesResolveContext(topDownAnalysisContext) :
null; null;
return AnalyzeExhaust.success(trace.getBindingContext(), bodiesResolveContext, owner); return AnalyzeExhaust.success(trace.getBindingContext(), bodiesResolveContext, owner);
} }