diff --git a/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java b/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java index 7c29056415f..d9d953d3852 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/jvm/repl/ReplInterpreter.java @@ -43,7 +43,6 @@ import org.jetbrains.jet.codegen.KotlinCodegenFacade; import org.jetbrains.jet.codegen.state.GenerationState; import org.jetbrains.jet.config.CompilerConfiguration; import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm; -import org.jetbrains.jet.lang.descriptors.DependencyKind; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ScriptDescriptor; import org.jetbrains.jet.lang.descriptors.impl.PackageLikeBuilderDummy; @@ -60,6 +59,7 @@ import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl; import org.jetbrains.jet.lang.types.lang.InlineUtil; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.plugin.JetLanguage; +import org.jetbrains.jet.storage.LockBasedStorageManager; import org.jetbrains.jet.utils.ExceptionUtils; import java.io.File; @@ -102,6 +102,7 @@ public class ReplInterpreter { trace = new BindingTraceContext(); module = AnalyzerFacadeForJVM.createJavaModule(""); TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters( + new LockBasedStorageManager(), Predicates.alwaysTrue(), false, true, diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 5a24465248d..42289713e62 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -22,7 +22,7 @@ import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.DescriptorResolver; -import org.jetbrains.jet.storage.LockBasedStorageManager; +import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; @@ -82,7 +82,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; private final DescriptorResolver descriptorResolver; - private final LockBasedStorageManager storageManager; + private final StorageManager storageManager; private final CallResolverExtensionProvider callResolverExtensionProvider; private final Project project; private final TopDownAnalysisParameters topDownAnalysisParameters; @@ -143,7 +143,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); this.descriptorResolver = new DescriptorResolver(); - this.storageManager = new LockBasedStorageManager(); + this.storageManager = topDownAnalysisParameters.getStorageManager(); this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.project = project; this.topDownAnalysisParameters = topDownAnalysisParameters; @@ -164,7 +164,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingServices = new ExpressionTypingServices(); + this.expressionTypingServices = new ExpressionTypingServices(storageManager, javaToKotlinClassMap); this.callExpressionResolver = new CallExpressionResolver(); this.typeResolver = new TypeResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); @@ -225,6 +225,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly this.descriptorResolver.setAnnotationResolver(annotationResolver); this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); this.descriptorResolver.setExpressionTypingServices(expressionTypingServices); + this.descriptorResolver.setStorageManager(storageManager); this.descriptorResolver.setTypeResolver(typeResolver); this.javaDescriptorResolver.setClassResolver(javaClassResolver); @@ -283,7 +284,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly expressionTypingServices.setCallResolver(callResolver); expressionTypingServices.setDescriptorResolver(descriptorResolver); expressionTypingServices.setExtensionProvider(callResolverExtensionProvider); - expressionTypingServices.setPlatformToKotlinClassMap(javaToKotlinClassMap); expressionTypingServices.setProject(project); expressionTypingServices.setTypeResolver(typeResolver); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java index fd95a6770fe..7f12fa84f15 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java @@ -40,6 +40,7 @@ import org.jetbrains.jet.storage.LockBasedLazyResolveStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; +import org.jetbrains.jet.storage.LockBasedStorageManager; import java.util.Collection; import java.util.Collections; @@ -200,7 +201,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade { ModuleDescriptorImpl module ) { TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters( - filesToAnalyzeCompletely, false, false, scriptParameters); + new LockBasedStorageManager(), filesToAnalyzeCompletely, false, false, scriptParameters); InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module); try { diff --git a/compiler/frontend/src/org/jetbrains/jet/analyzer/AnalyzerFacadeForEverything.java b/compiler/frontend/src/org/jetbrains/jet/analyzer/AnalyzerFacadeForEverything.java index 0a75b5b5a51..c08a4d708c0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/analyzer/AnalyzerFacadeForEverything.java +++ b/compiler/frontend/src/org/jetbrains/jet/analyzer/AnalyzerFacadeForEverything.java @@ -38,7 +38,7 @@ public class AnalyzerFacadeForEverything { @NotNull ModuleDescriptor module) { TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters( - filesToAnalyzeCompletely, false, false, scriptParameters); + bodiesResolveContext.getStorageManager(), filesToAnalyzeCompletely, false, false, scriptParameters); bodiesResolveContext.setTopDownAnalysisParameters(topDownAnalysisParameters); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java index 003e265c471..0fe515af0b7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java @@ -20,6 +20,7 @@ import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension; +import org.jetbrains.jet.storage.StorageManager; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.jet.lang.resolve.BindingTrace; @@ -49,6 +50,7 @@ public class InjectorForBodyResolve { private final CallResolverExtensionProvider callResolverExtensionProvider; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final FunctionAnalyzerExtension functionAnalyzerExtension; + private final StorageManager storageManager; private final Project project; private final TopDownAnalysisParameters topDownAnalysisParameters; private final BindingTrace bindingTrace; @@ -80,6 +82,7 @@ public class InjectorForBodyResolve { this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); + this.storageManager = topDownAnalysisParameters.getStorageManager(); this.project = project; this.topDownAnalysisParameters = topDownAnalysisParameters; this.bindingTrace = bindingTrace; @@ -88,7 +91,7 @@ public class InjectorForBodyResolve { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingServices = new ExpressionTypingServices(); + this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); this.delegatedPropertyResolver = new DelegatedPropertyResolver(); @@ -130,7 +133,6 @@ public class InjectorForBodyResolve { expressionTypingServices.setCallResolver(callResolver); expressionTypingServices.setDescriptorResolver(descriptorResolver); expressionTypingServices.setExtensionProvider(callResolverExtensionProvider); - expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingServices.setProject(project); expressionTypingServices.setTypeResolver(typeResolver); @@ -139,6 +141,7 @@ public class InjectorForBodyResolve { descriptorResolver.setAnnotationResolver(annotationResolver); descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); descriptorResolver.setExpressionTypingServices(expressionTypingServices); + descriptorResolver.setStorageManager(storageManager); descriptorResolver.setTypeResolver(typeResolver); delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java index a376c78f5cf..bd3904b7352 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java @@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.jet.lang.psi.JetImportsFactory; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; +import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; @@ -51,6 +52,7 @@ public class InjectorForLazyResolve { private final JetImportsFactory jetImportsFactory; private final CallResolverExtensionProvider callResolverExtensionProvider; private final PlatformToKotlinClassMap platformToKotlinClassMap; + private final StorageManager storageManager; private final DelegatedPropertyResolver delegatedPropertyResolver; private final CallExpressionResolver callExpressionResolver; private final CallResolver callResolver; @@ -66,14 +68,15 @@ public class InjectorForLazyResolve { this.resolveSession = resolveSession; this.moduleDescriptor = moduleDescriptor; this.descriptorResolver = new DescriptorResolver(); - this.expressionTypingServices = new ExpressionTypingServices(); + this.storageManager = resolveSession.getStorageManager(); + this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); + this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap); this.typeResolver = new TypeResolver(); this.scopeProvider = new ScopeProvider(resolveSession); this.annotationResolver = new AnnotationResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.jetImportsFactory = new JetImportsFactory(); this.callResolverExtensionProvider = new CallResolverExtensionProvider(); - this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.callExpressionResolver = new CallExpressionResolver(); this.callResolver = new CallResolver(); @@ -83,6 +86,7 @@ public class InjectorForLazyResolve { this.descriptorResolver.setAnnotationResolver(annotationResolver); this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); this.descriptorResolver.setExpressionTypingServices(expressionTypingServices); + this.descriptorResolver.setStorageManager(storageManager); this.descriptorResolver.setTypeResolver(typeResolver); this.expressionTypingServices.setAnnotationResolver(annotationResolver); @@ -90,7 +94,6 @@ public class InjectorForLazyResolve { this.expressionTypingServices.setCallResolver(callResolver); this.expressionTypingServices.setDescriptorResolver(descriptorResolver); this.expressionTypingServices.setExtensionProvider(callResolverExtensionProvider); - this.expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap); this.expressionTypingServices.setProject(project); this.expressionTypingServices.setTypeResolver(typeResolver); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java index ca7c40de78c..1e58acccc2e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java @@ -18,6 +18,7 @@ package org.jetbrains.jet.di; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; +import org.jetbrains.jet.storage.LockBasedStorageManager; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; @@ -38,6 +39,7 @@ public class InjectorForMacros { private final ExpressionTypingServices expressionTypingServices; private final CallResolverExtensionProvider callResolverExtensionProvider; + private final LockBasedStorageManager lockBasedStorageManager; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final Project project; private final ModuleDescriptor moduleDescriptor; @@ -55,9 +57,10 @@ public class InjectorForMacros { @NotNull Project project, @NotNull ModuleDescriptor moduleDescriptor ) { - this.expressionTypingServices = new ExpressionTypingServices(); - this.callResolverExtensionProvider = new CallResolverExtensionProvider(); + this.lockBasedStorageManager = new LockBasedStorageManager(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); + this.expressionTypingServices = new ExpressionTypingServices(lockBasedStorageManager, platformToKotlinClassMap); + this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.project = project; this.moduleDescriptor = moduleDescriptor; this.annotationResolver = new AnnotationResolver(); @@ -75,7 +78,6 @@ public class InjectorForMacros { this.expressionTypingServices.setCallResolver(callResolver); this.expressionTypingServices.setDescriptorResolver(descriptorResolver); this.expressionTypingServices.setExtensionProvider(callResolverExtensionProvider); - this.expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap); this.expressionTypingServices.setProject(project); this.expressionTypingServices.setTypeResolver(typeResolver); @@ -101,6 +103,7 @@ public class InjectorForMacros { descriptorResolver.setAnnotationResolver(annotationResolver); descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); descriptorResolver.setExpressionTypingServices(expressionTypingServices); + descriptorResolver.setStorageManager(lockBasedStorageManager); descriptorResolver.setTypeResolver(typeResolver); delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java index c6a3666e94c..f2bdc90adf6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java @@ -22,7 +22,7 @@ import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.DescriptorResolver; -import org.jetbrains.jet.storage.LockBasedStorageManager; +import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; @@ -61,7 +61,7 @@ public class InjectorForTopDownAnalyzerBasic { private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; private final DescriptorResolver descriptorResolver; - private final LockBasedStorageManager storageManager; + private final StorageManager storageManager; private final CallResolverExtensionProvider callResolverExtensionProvider; private final Project project; private final TopDownAnalysisParameters topDownAnalysisParameters; @@ -102,7 +102,7 @@ public class InjectorForTopDownAnalyzerBasic { this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); this.descriptorResolver = new DescriptorResolver(); - this.storageManager = new LockBasedStorageManager(); + this.storageManager = topDownAnalysisParameters.getStorageManager(); this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.project = project; this.topDownAnalysisParameters = topDownAnalysisParameters; @@ -115,7 +115,7 @@ public class InjectorForTopDownAnalyzerBasic { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingServices = new ExpressionTypingServices(); + this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap); this.callExpressionResolver = new CallExpressionResolver(); this.typeResolver = new TypeResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); @@ -163,6 +163,7 @@ public class InjectorForTopDownAnalyzerBasic { this.descriptorResolver.setAnnotationResolver(annotationResolver); this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); this.descriptorResolver.setExpressionTypingServices(expressionTypingServices); + this.descriptorResolver.setStorageManager(storageManager); this.descriptorResolver.setTypeResolver(typeResolver); declarationResolver.setAnnotationResolver(annotationResolver); @@ -188,7 +189,6 @@ public class InjectorForTopDownAnalyzerBasic { expressionTypingServices.setCallResolver(callResolver); expressionTypingServices.setDescriptorResolver(descriptorResolver); expressionTypingServices.setExtensionProvider(callResolverExtensionProvider); - expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingServices.setProject(project); expressionTypingServices.setTypeResolver(typeResolver); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodiesResolveContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodiesResolveContext.java index dfafd5c1609..422fc0656ae 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodiesResolveContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodiesResolveContext.java @@ -27,11 +27,13 @@ import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; +import org.jetbrains.jet.storage.StorageManager; import java.util.Collection; import java.util.Map; public interface BodiesResolveContext { + StorageManager getStorageManager(); Collection getFiles(); Map getClasses(); Map getProperties(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CachedBodiesResolveContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CachedBodiesResolveContext.java index b623020f5ba..30f98458bfe 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CachedBodiesResolveContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CachedBodiesResolveContext.java @@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; +import org.jetbrains.jet.storage.StorageManager; import java.util.Collection; import java.util.Collections; @@ -62,6 +63,11 @@ public class CachedBodiesResolveContext implements BodiesResolveContext { topDownAnalysisParameters = context.getTopDownAnalysisParameters(); } + @Override + public StorageManager getStorageManager() { + return topDownAnalysisParameters.getStorageManager(); + } + @Override public Collection getFiles() { return files; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java index 82a161eada8..ba2f67d8392 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java @@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; +import org.jetbrains.jet.storage.StorageManager; import javax.inject.Inject; import java.io.PrintStream; @@ -118,6 +119,11 @@ public class TopDownAnalysisContext implements BodiesResolveContext { return packageFragments; } + @Override + public StorageManager getStorageManager() { + return topDownAnalysisParameters.getStorageManager(); + } + @Override public Collection getFiles() { return packageFragments.keySet(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisParameters.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisParameters.java index 3278f04a960..7ea26ad2443 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisParameters.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisParameters.java @@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.resolve; import com.google.common.base.Predicate; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.storage.StorageManager; import java.util.List; @@ -26,6 +27,8 @@ import java.util.List; * Various junk that cannot be placed into context (yet). */ public class TopDownAnalysisParameters { + @NotNull + private final StorageManager storageManager; @NotNull private final Predicate analyzeCompletely; private final boolean analyzingBootstrapLibrary; @@ -34,16 +37,24 @@ public class TopDownAnalysisParameters { private final List scriptParameters; public TopDownAnalysisParameters( + @NotNull StorageManager storageManager, @NotNull Predicate analyzeCompletely, boolean analyzingBootstrapLibrary, boolean declaredLocally, - @NotNull List scriptParameters) { + @NotNull List scriptParameters + ) { + this.storageManager = storageManager; this.analyzeCompletely = analyzeCompletely; this.analyzingBootstrapLibrary = analyzingBootstrapLibrary; this.declaredLocally = declaredLocally; this.scriptParameters = scriptParameters; } + @NotNull + public StorageManager getStorageManager() { + return storageManager; + } + @NotNull public Predicate getAnalyzeCompletely() { return analyzeCompletely; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index 6dbe79362d7..11193e6c8f7 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -34,6 +34,7 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingContext; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; +import org.jetbrains.jet.storage.StorageManager; import javax.inject.Inject; import java.util.Collection; @@ -158,6 +159,7 @@ public class TopDownAnalyzer { } public static void processClassOrObject( + @NotNull StorageManager storageManager, @Nullable final WritableScope scope, @NotNull ExpressionTypingContext context, @NotNull final DeclarationDescriptor containingDeclaration, @@ -168,7 +170,7 @@ public class TopDownAnalyzer { PlatformToKotlinClassMap.EMPTY); TopDownAnalysisParameters topDownAnalysisParameters = - new TopDownAnalysisParameters(Predicates.equalTo(object.getContainingFile()), + new TopDownAnalysisParameters(storageManager, Predicates.equalTo(object.getContainingFile()), false, true, Collections.emptyList()); InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic( diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java index ea29e34e261..08cb2c28391 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java @@ -90,7 +90,8 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { }; ObservableBindingTrace traceAdapter = new ObservableBindingTrace(temporaryTrace); traceAdapter.addHandler(CLASS, handler); - TopDownAnalyzer.processClassOrObject(null, // don't need to add classifier of object literal to any scope + TopDownAnalyzer.processClassOrObject(storageManager, + null, // don't need to add classifier of object literal to any scope context.replaceBindingTrace(traceAdapter).replaceContextDependency(INDEPENDENT), context.scope.getContainingDeclaration(), expression.getObjectDeclaration()); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java index 84aeed8ea05..cb5d3dcd4fb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingServices.java @@ -137,12 +137,6 @@ public class ExpressionTypingServices { this.annotationResolver = annotationResolver; } - @Inject - public void setPlatformToKotlinClassMap(@NotNull PlatformToKotlinClassMap platformToKotlinClassMap) { - this.platformToKotlinClassMap = platformToKotlinClassMap; - this.expressionTypingFacade = ExpressionTypingVisitorDispatcher.create(storageManager, platformToKotlinClassMap); - } - @NotNull public PlatformToKotlinClassMap getPlatformToKotlinClassMap() { return platformToKotlinClassMap; @@ -153,9 +147,13 @@ public class ExpressionTypingServices { this.extensionProvider = extensionProvider; } - @Inject - public void setStorageManager(@NotNull StorageManager storageManager) { + public ExpressionTypingServices( + @NotNull StorageManager storageManager, + @NotNull PlatformToKotlinClassMap platformToKotlinClassMap + ) { this.storageManager = storageManager; + this.platformToKotlinClassMap = platformToKotlinClassMap; + this.expressionTypingFacade = ExpressionTypingVisitorDispatcher.create(storageManager, platformToKotlinClassMap); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java index 532f632418a..92da4c3fec8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java @@ -48,6 +48,7 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitoralwaysFalse(), false, false, Collections.emptyList()), + new LockBasedStorageManager(), Predicates.alwaysFalse(), false, false, Collections.emptyList()), trace, module); diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java index 76f1bdcc366..21f16429934 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveTestUtil.java @@ -40,6 +40,7 @@ import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.SpecialNames; +import org.jetbrains.jet.storage.LockBasedStorageManager; import java.util.Collections; import java.util.List; @@ -53,7 +54,7 @@ public class LazyResolveTestUtil { JetTestUtils.newTrace(environment); TopDownAnalysisParameters params = new TopDownAnalysisParameters( - Predicates.alwaysTrue(), false, false, Collections.emptyList()); + new LockBasedStorageManager(), Predicates.alwaysTrue(), false, false, Collections.emptyList()); CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()); BindingTrace sharedTrace = support.getTrace(); ModuleDescriptorImpl sharedModule = support.getModule(); diff --git a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.java b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.java index 352ca40da1e..712a125d088 100644 --- a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.java +++ b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.java @@ -26,7 +26,6 @@ import org.jetbrains.jet.codegen.state.JetTypeMapper; import org.jetbrains.jet.di.DependencyInjectorGenerator; import org.jetbrains.jet.di.GivenExpression; import org.jetbrains.jet.di.InjectorForTopDownAnalyzer; -import org.jetbrains.jet.di.InstantiateType; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; @@ -98,6 +97,7 @@ public class GenerateInjectors { generator.addPublicField(JetImportsFactory.class); generator.addField(CallResolverExtensionProvider.class); generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")); + generator.addField(false, StorageManager.class, null, new GivenExpression("resolveSession.getStorageManager()")); generator.configure("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve", GenerateInjectors.class); return generator; } @@ -179,7 +179,7 @@ public class GenerateInjectors { generator.addPublicField(ControlFlowAnalyzer.class); generator.addPublicField(DeclarationsChecker.class); generator.addPublicField(DescriptorResolver.class); - generator.addField(false, StorageManager.class, null, new InstantiateType(LockBasedStorageManager.class)); + generator.addField(false, StorageManager.class, null, new GivenExpression("topDownAnalysisParameters.getStorageManager()")); generator.addField(CallResolverExtensionProvider.class); // Parameters @@ -196,6 +196,7 @@ public class GenerateInjectors { // Fields generator.addPublicField(ExpressionTypingServices.class); generator.addField(CallResolverExtensionProvider.class); + generator.addField(LockBasedStorageManager.class); generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")); // Parameters @@ -215,6 +216,7 @@ public class GenerateInjectors { generator.addPublicField(TypeResolver.class); generator.addPublicField(CallResolver.class); generator.addField(CallResolverExtensionProvider.class); + generator.addField(LockBasedStorageManager.class); generator.addField(true, KotlinBuiltIns.class, null, new GivenExpression("KotlinBuiltIns.getInstance()")); generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")); @@ -256,6 +258,7 @@ public class GenerateInjectors { generator.addField(CallResolverExtensionProvider.class); generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")); generator.addField(FunctionAnalyzerExtension.class); + generator.addField(false, StorageManager.class, null, new GivenExpression("topDownAnalysisParameters.getStorageManager()")); // Parameters generator.addPublicParameter(Project.class); diff --git a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java index 442a8d8d33c..488e0e3df76 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java +++ b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java @@ -43,14 +43,13 @@ import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.types.TypeConstructor; import org.jetbrains.jet.storage.LazyResolveStorageManager; import org.jetbrains.jet.storage.MemoizedFunctionToNotNull; +import org.jetbrains.jet.storage.StorageManager; import java.util.Collection; import java.util.Collections; import java.util.Map; public class ResolveElementCache { - private static final BodyResolveContextForLazy EMPTY_CONTEXT = new BodyResolveContextForLazy(Functions.constant(null)); - private final CachedValue> additionalResolveCache; private final ResolveSession resolveSession; @@ -225,12 +224,13 @@ public class ResolveElementCache { } private static void delegationSpecifierAdditionalResolve( - KotlinCodeAnalyzer analyzer, + ResolveSession resolveSession, JetDelegationSpecifierList specifier, BindingTrace trace, JetFile file) { - BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, analyzer.getModuleDescriptor()); + BodyResolver bodyResolver = createBodyResolverWithEmptyContext(resolveSession.getStorageManager(), + trace, file, resolveSession.getModuleDescriptor()); JetClassOrObject classOrObject = (JetClassOrObject) specifier.getParent(); - LazyClassDescriptor descriptor = (LazyClassDescriptor) analyzer.resolveToDescriptor(classOrObject); + LazyClassDescriptor descriptor = (LazyClassDescriptor) resolveSession.resolveToDescriptor(classOrObject); // Activate resolving of supertypes descriptor.getTypeConstructor().getSupertypes(); @@ -245,13 +245,16 @@ public class ResolveElementCache { final JetScope propertyResolutionScope = resolveSession.getInjector().getScopeProvider().getResolutionScopeForDeclaration( jetProperty); - BodyResolveContextForLazy bodyResolveContext = new BodyResolveContextForLazy(new Function() { - @Override - public JetScope apply(JetDeclaration declaration) { - assert declaration.getParent() == jetProperty : "Must be called only for property accessors, but called for " + declaration; - return propertyResolutionScope; - } - }); + BodyResolveContextForLazy bodyResolveContext = new BodyResolveContextForLazy( + resolveSession.getStorageManager(), + new Function() { + @Override + public JetScope apply(JetDeclaration declaration) { + assert declaration.getParent() == jetProperty : "Must be called only for property accessors, but called for " + + declaration; + return propertyResolutionScope; + } + }); BodyResolver bodyResolver = createBodyResolver(trace, file, bodyResolveContext, resolveSession.getModuleDescriptor()); PropertyDescriptor descriptor = (PropertyDescriptor) resolveSession.resolveToDescriptor(jetProperty); @@ -274,7 +277,8 @@ public class ResolveElementCache { BindingTrace trace, JetFile file ) { - BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, resolveSession.getModuleDescriptor()); + BodyResolver bodyResolver = createBodyResolverWithEmptyContext(resolveSession.getStorageManager(), + trace, file, resolveSession.getModuleDescriptor()); JetScope scope = resolveSession.getInjector().getScopeProvider().getResolutionScopeForDeclaration(namedFunction); FunctionDescriptor functionDescriptor = (FunctionDescriptor) resolveSession.resolveToDescriptor(namedFunction); bodyResolver.resolveFunctionBody(trace, namedFunction, functionDescriptor, scope); @@ -286,7 +290,8 @@ public class ResolveElementCache { BindingTrace trace, JetFile file ) { - BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, resolveSession.getModuleDescriptor()); + BodyResolver bodyResolver = createBodyResolverWithEmptyContext(resolveSession.getStorageManager(), + trace, file, resolveSession.getModuleDescriptor()); JetScope scope = resolveSession.getInjector().getScopeProvider().getResolutionScopeForDeclaration(klass); ClassDescriptor classDescriptor = (ClassDescriptor) resolveSession.resolveToDescriptor(klass); @@ -297,14 +302,15 @@ public class ResolveElementCache { } private static boolean initializerAdditionalResolve( - KotlinCodeAnalyzer analyzer, + ResolveSession resolveSession, JetClassInitializer classInitializer, BindingTrace trace, JetFile file ) { - BodyResolver bodyResolver = createBodyResolverWithEmptyContext(trace, file, analyzer.getModuleDescriptor()); + BodyResolver bodyResolver = createBodyResolverWithEmptyContext(resolveSession.getStorageManager(), + trace, file, resolveSession.getModuleDescriptor()); JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(classInitializer, JetClassOrObject.class); - LazyClassDescriptor classOrObjectDescriptor = (LazyClassDescriptor) analyzer.resolveToDescriptor(classOrObject); + LazyClassDescriptor classOrObjectDescriptor = (LazyClassDescriptor) resolveSession.resolveToDescriptor(classOrObject); bodyResolver.resolveAnonymousInitializers(classOrObject, classOrObjectDescriptor.getUnsubstitutedPrimaryConstructor(), classOrObjectDescriptor.getScopeForPropertyInitializerResolution()); @@ -314,17 +320,19 @@ public class ResolveElementCache { private static BodyResolver createBodyResolver(BindingTrace trace, JetFile file, BodyResolveContextForLazy bodyResolveContext, ModuleDescriptor module) { TopDownAnalysisParameters parameters = new TopDownAnalysisParameters( + bodyResolveContext.getStorageManager(), Predicates.alwaysTrue(), false, true, Collections.emptyList()); InjectorForBodyResolve bodyResolve = new InjectorForBodyResolve(file.getProject(), parameters, trace, bodyResolveContext, module); return bodyResolve.getBodyResolver(); } private static BodyResolver createBodyResolverWithEmptyContext( + StorageManager storageManager, BindingTrace trace, JetFile file, ModuleDescriptor module ) { - return createBodyResolver(trace, file, EMPTY_CONTEXT, module); + return createBodyResolver(trace, file, new BodyResolveContextForLazy(storageManager, Functions.constant(null)), module); } private static JetScope getExpressionResolutionScope(@NotNull ResolveSession resolveSession, @NotNull JetExpression expression) { @@ -413,12 +421,19 @@ public class ResolveElementCache { private static class BodyResolveContextForLazy implements BodiesResolveContext { + private final StorageManager storageManager; private final Function declaringScopes; - private BodyResolveContextForLazy(@NotNull Function declaringScopes) { + private BodyResolveContextForLazy(StorageManager storageManager, @NotNull Function declaringScopes) { + this.storageManager = storageManager; this.declaringScopes = declaringScopes; } + @Override + public StorageManager getStorageManager() { + return storageManager; + } + @Override public Collection getFiles() { return Collections.emptySet(); diff --git a/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java b/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java index 9086edc9f72..a534ba7a6c1 100644 --- a/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java +++ b/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java @@ -44,6 +44,7 @@ import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.renderer.DescriptorRenderer; +import org.jetbrains.jet.storage.LockBasedStorageManager; import org.jetbrains.jet.utils.ExceptionUtils; import java.io.File; @@ -84,6 +85,7 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { @Override public void run() { TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters( + new LockBasedStorageManager(), Predicates.alwaysFalse(), true, false, Collections.emptyList()); ModuleDescriptorImpl module = new ModuleDescriptorImpl( Name.special(""), Collections.emptyList(), PlatformToKotlinClassMap.EMPTY); diff --git a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java index 050e857fcb0..8a003cd629f 100644 --- a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java @@ -22,7 +22,7 @@ import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.DescriptorResolver; -import org.jetbrains.jet.storage.LockBasedStorageManager; +import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; @@ -61,7 +61,7 @@ public class InjectorForTopDownAnalyzerForJs { private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; private final DescriptorResolver descriptorResolver; - private final LockBasedStorageManager storageManager; + private final StorageManager storageManager; private final CallResolverExtensionProvider callResolverExtensionProvider; private final Project project; private final TopDownAnalysisParameters topDownAnalysisParameters; @@ -101,7 +101,7 @@ public class InjectorForTopDownAnalyzerForJs { this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); this.descriptorResolver = new DescriptorResolver(); - this.storageManager = new LockBasedStorageManager(); + this.storageManager = topDownAnalysisParameters.getStorageManager(); this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.project = project; this.topDownAnalysisParameters = topDownAnalysisParameters; @@ -114,7 +114,7 @@ public class InjectorForTopDownAnalyzerForJs { this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingServices = new ExpressionTypingServices(); + this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap); this.callExpressionResolver = new CallExpressionResolver(); this.typeResolver = new TypeResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); @@ -162,6 +162,7 @@ public class InjectorForTopDownAnalyzerForJs { this.descriptorResolver.setAnnotationResolver(annotationResolver); this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); this.descriptorResolver.setExpressionTypingServices(expressionTypingServices); + this.descriptorResolver.setStorageManager(storageManager); this.descriptorResolver.setTypeResolver(typeResolver); declarationResolver.setAnnotationResolver(annotationResolver); @@ -187,7 +188,6 @@ public class InjectorForTopDownAnalyzerForJs { expressionTypingServices.setCallResolver(callResolver); expressionTypingServices.setDescriptorResolver(descriptorResolver); expressionTypingServices.setExtensionProvider(callResolverExtensionProvider); - expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingServices.setProject(project); expressionTypingServices.setTypeResolver(typeResolver); diff --git a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java index 8ed47d99af9..f1e8c6f18cb 100644 --- a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java +++ b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java @@ -34,10 +34,10 @@ import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; -import org.jetbrains.jet.storage.LockBasedLazyResolveStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; +import org.jetbrains.jet.storage.LockBasedLazyResolveStorageManager; import org.jetbrains.jet.storage.LockBasedStorageManager; import org.jetbrains.k2js.config.Config; @@ -91,7 +91,7 @@ public final class AnalyzerFacadeForJS { Predicate completely = Predicates.and(notLibFiles(config.getLibFiles()), filesToAnalyzeCompletely); TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters( - completely, false, false, Collections.emptyList()); + new LockBasedStorageManager(), completely, false, false, Collections.emptyList()); ModuleDescriptor libraryModule = config.getLibraryModule(); if (libraryModule != null) {