Components across the project use StorageManager
This commit is contained in:
@@ -43,7 +43,6 @@ import org.jetbrains.jet.codegen.KotlinCodegenFacade;
|
|||||||
import org.jetbrains.jet.codegen.state.GenerationState;
|
import org.jetbrains.jet.codegen.state.GenerationState;
|
||||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
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.ModuleDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ScriptDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.PackageLikeBuilderDummy;
|
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.InlineUtil;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
import org.jetbrains.jet.plugin.JetLanguage;
|
import org.jetbrains.jet.plugin.JetLanguage;
|
||||||
|
import org.jetbrains.jet.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.jet.utils.ExceptionUtils;
|
import org.jetbrains.jet.utils.ExceptionUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -102,6 +102,7 @@ public class ReplInterpreter {
|
|||||||
trace = new BindingTraceContext();
|
trace = new BindingTraceContext();
|
||||||
module = AnalyzerFacadeForJVM.createJavaModule("<repl>");
|
module = AnalyzerFacadeForJVM.createJavaModule("<repl>");
|
||||||
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
||||||
|
new LockBasedStorageManager(),
|
||||||
Predicates.<PsiFile>alwaysTrue(),
|
Predicates.<PsiFile>alwaysTrue(),
|
||||||
false,
|
false,
|
||||||
true,
|
true,
|
||||||
|
|||||||
+5
-5
@@ -22,7 +22,7 @@ import org.jetbrains.jet.lang.resolve.BodyResolver;
|
|||||||
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
|
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
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 org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
||||||
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;
|
||||||
@@ -82,7 +82,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
||||||
private final DeclarationsChecker declarationsChecker;
|
private final DeclarationsChecker declarationsChecker;
|
||||||
private final DescriptorResolver descriptorResolver;
|
private final DescriptorResolver descriptorResolver;
|
||||||
private final LockBasedStorageManager storageManager;
|
private final StorageManager storageManager;
|
||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
@@ -143,7 +143,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
||||||
this.declarationsChecker = new DeclarationsChecker();
|
this.declarationsChecker = new DeclarationsChecker();
|
||||||
this.descriptorResolver = new DescriptorResolver();
|
this.descriptorResolver = new DescriptorResolver();
|
||||||
this.storageManager = new LockBasedStorageManager();
|
this.storageManager = topDownAnalysisParameters.getStorageManager();
|
||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
@@ -164,7 +164,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
this.argumentTypeResolver = new ArgumentTypeResolver();
|
this.argumentTypeResolver = new ArgumentTypeResolver();
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.expressionTypingServices = new ExpressionTypingServices(storageManager, javaToKotlinClassMap);
|
||||||
this.callExpressionResolver = new CallExpressionResolver();
|
this.callExpressionResolver = new CallExpressionResolver();
|
||||||
this.typeResolver = new TypeResolver();
|
this.typeResolver = new TypeResolver();
|
||||||
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
||||||
@@ -225,6 +225,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
||||||
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
||||||
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
this.descriptorResolver.setStorageManager(storageManager);
|
||||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
|
this.javaDescriptorResolver.setClassResolver(javaClassResolver);
|
||||||
@@ -283,7 +284,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
expressionTypingServices.setCallResolver(callResolver);
|
expressionTypingServices.setCallResolver(callResolver);
|
||||||
expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
||||||
expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
||||||
expressionTypingServices.setPlatformToKotlinClassMap(javaToKotlinClassMap);
|
|
||||||
expressionTypingServices.setProject(project);
|
expressionTypingServices.setProject(project);
|
||||||
expressionTypingServices.setTypeResolver(typeResolver);
|
expressionTypingServices.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -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.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.jet.storage.LockBasedStorageManager;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -200,7 +201,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
|
|||||||
ModuleDescriptorImpl module
|
ModuleDescriptorImpl module
|
||||||
) {
|
) {
|
||||||
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
||||||
filesToAnalyzeCompletely, false, false, scriptParameters);
|
new LockBasedStorageManager(), filesToAnalyzeCompletely, false, false, scriptParameters);
|
||||||
|
|
||||||
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
|
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module);
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class AnalyzerFacadeForEverything {
|
|||||||
@NotNull ModuleDescriptor module) {
|
@NotNull ModuleDescriptor module) {
|
||||||
|
|
||||||
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
||||||
filesToAnalyzeCompletely, false, false, scriptParameters);
|
bodiesResolveContext.getStorageManager(), filesToAnalyzeCompletely, false, false, scriptParameters);
|
||||||
|
|
||||||
bodiesResolveContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
bodiesResolveContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.jetbrains.jet.lang.resolve.BodyResolver;
|
|||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
||||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
|
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
|
||||||
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
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.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
@@ -49,6 +50,7 @@ public class InjectorForBodyResolve {
|
|||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||||
private final FunctionAnalyzerExtension functionAnalyzerExtension;
|
private final FunctionAnalyzerExtension functionAnalyzerExtension;
|
||||||
|
private final StorageManager storageManager;
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
private final BindingTrace bindingTrace;
|
private final BindingTrace bindingTrace;
|
||||||
@@ -80,6 +82,7 @@ public class InjectorForBodyResolve {
|
|||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
|
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
|
||||||
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
|
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
|
||||||
|
this.storageManager = topDownAnalysisParameters.getStorageManager();
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
this.bindingTrace = bindingTrace;
|
this.bindingTrace = bindingTrace;
|
||||||
@@ -88,7 +91,7 @@ public class InjectorForBodyResolve {
|
|||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
this.argumentTypeResolver = new ArgumentTypeResolver();
|
this.argumentTypeResolver = new ArgumentTypeResolver();
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap);
|
||||||
this.callExpressionResolver = new CallExpressionResolver();
|
this.callExpressionResolver = new CallExpressionResolver();
|
||||||
this.descriptorResolver = new DescriptorResolver();
|
this.descriptorResolver = new DescriptorResolver();
|
||||||
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
|
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
|
||||||
@@ -130,7 +133,6 @@ public class InjectorForBodyResolve {
|
|||||||
expressionTypingServices.setCallResolver(callResolver);
|
expressionTypingServices.setCallResolver(callResolver);
|
||||||
expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
||||||
expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
||||||
expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
|
|
||||||
expressionTypingServices.setProject(project);
|
expressionTypingServices.setProject(project);
|
||||||
expressionTypingServices.setTypeResolver(typeResolver);
|
expressionTypingServices.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
@@ -139,6 +141,7 @@ public class InjectorForBodyResolve {
|
|||||||
descriptorResolver.setAnnotationResolver(annotationResolver);
|
descriptorResolver.setAnnotationResolver(annotationResolver);
|
||||||
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
||||||
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
descriptorResolver.setStorageManager(storageManager);
|
||||||
descriptorResolver.setTypeResolver(typeResolver);
|
descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
|
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
|
|||||||
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
import org.jetbrains.jet.lang.psi.JetImportsFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
||||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
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.DelegatedPropertyResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||||
@@ -51,6 +52,7 @@ public class InjectorForLazyResolve {
|
|||||||
private final JetImportsFactory jetImportsFactory;
|
private final JetImportsFactory jetImportsFactory;
|
||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||||
|
private final StorageManager storageManager;
|
||||||
private final DelegatedPropertyResolver delegatedPropertyResolver;
|
private final DelegatedPropertyResolver delegatedPropertyResolver;
|
||||||
private final CallExpressionResolver callExpressionResolver;
|
private final CallExpressionResolver callExpressionResolver;
|
||||||
private final CallResolver callResolver;
|
private final CallResolver callResolver;
|
||||||
@@ -66,14 +68,15 @@ public class InjectorForLazyResolve {
|
|||||||
this.resolveSession = resolveSession;
|
this.resolveSession = resolveSession;
|
||||||
this.moduleDescriptor = moduleDescriptor;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.descriptorResolver = new DescriptorResolver();
|
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.typeResolver = new TypeResolver();
|
||||||
this.scopeProvider = new ScopeProvider(resolveSession);
|
this.scopeProvider = new ScopeProvider(resolveSession);
|
||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
||||||
this.jetImportsFactory = new JetImportsFactory();
|
this.jetImportsFactory = new JetImportsFactory();
|
||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
|
|
||||||
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
|
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
|
||||||
this.callExpressionResolver = new CallExpressionResolver();
|
this.callExpressionResolver = new CallExpressionResolver();
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
@@ -83,6 +86,7 @@ public class InjectorForLazyResolve {
|
|||||||
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
||||||
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
||||||
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
this.descriptorResolver.setStorageManager(storageManager);
|
||||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
this.expressionTypingServices.setAnnotationResolver(annotationResolver);
|
this.expressionTypingServices.setAnnotationResolver(annotationResolver);
|
||||||
@@ -90,7 +94,6 @@ public class InjectorForLazyResolve {
|
|||||||
this.expressionTypingServices.setCallResolver(callResolver);
|
this.expressionTypingServices.setCallResolver(callResolver);
|
||||||
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
||||||
this.expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
this.expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
||||||
this.expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
|
|
||||||
this.expressionTypingServices.setProject(project);
|
this.expressionTypingServices.setProject(project);
|
||||||
this.expressionTypingServices.setTypeResolver(typeResolver);
|
this.expressionTypingServices.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ package org.jetbrains.jet.di;
|
|||||||
|
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
||||||
|
import org.jetbrains.jet.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
@@ -38,6 +39,7 @@ public class InjectorForMacros {
|
|||||||
|
|
||||||
private final ExpressionTypingServices expressionTypingServices;
|
private final ExpressionTypingServices expressionTypingServices;
|
||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
|
private final LockBasedStorageManager lockBasedStorageManager;
|
||||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private final ModuleDescriptor moduleDescriptor;
|
private final ModuleDescriptor moduleDescriptor;
|
||||||
@@ -55,9 +57,10 @@ public class InjectorForMacros {
|
|||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull ModuleDescriptor moduleDescriptor
|
@NotNull ModuleDescriptor moduleDescriptor
|
||||||
) {
|
) {
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.lockBasedStorageManager = new LockBasedStorageManager();
|
||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
|
||||||
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
|
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
|
||||||
|
this.expressionTypingServices = new ExpressionTypingServices(lockBasedStorageManager, platformToKotlinClassMap);
|
||||||
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.moduleDescriptor = moduleDescriptor;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
@@ -75,7 +78,6 @@ public class InjectorForMacros {
|
|||||||
this.expressionTypingServices.setCallResolver(callResolver);
|
this.expressionTypingServices.setCallResolver(callResolver);
|
||||||
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
||||||
this.expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
this.expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
||||||
this.expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
|
|
||||||
this.expressionTypingServices.setProject(project);
|
this.expressionTypingServices.setProject(project);
|
||||||
this.expressionTypingServices.setTypeResolver(typeResolver);
|
this.expressionTypingServices.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
@@ -101,6 +103,7 @@ public class InjectorForMacros {
|
|||||||
descriptorResolver.setAnnotationResolver(annotationResolver);
|
descriptorResolver.setAnnotationResolver(annotationResolver);
|
||||||
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
||||||
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
descriptorResolver.setStorageManager(lockBasedStorageManager);
|
||||||
descriptorResolver.setTypeResolver(typeResolver);
|
descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
|
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import org.jetbrains.jet.lang.resolve.BodyResolver;
|
|||||||
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
|
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
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 org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
||||||
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;
|
||||||
@@ -61,7 +61,7 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
||||||
private final DeclarationsChecker declarationsChecker;
|
private final DeclarationsChecker declarationsChecker;
|
||||||
private final DescriptorResolver descriptorResolver;
|
private final DescriptorResolver descriptorResolver;
|
||||||
private final LockBasedStorageManager storageManager;
|
private final StorageManager storageManager;
|
||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
@@ -102,7 +102,7 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
||||||
this.declarationsChecker = new DeclarationsChecker();
|
this.declarationsChecker = new DeclarationsChecker();
|
||||||
this.descriptorResolver = new DescriptorResolver();
|
this.descriptorResolver = new DescriptorResolver();
|
||||||
this.storageManager = new LockBasedStorageManager();
|
this.storageManager = topDownAnalysisParameters.getStorageManager();
|
||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
@@ -115,7 +115,7 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
this.argumentTypeResolver = new ArgumentTypeResolver();
|
this.argumentTypeResolver = new ArgumentTypeResolver();
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap);
|
||||||
this.callExpressionResolver = new CallExpressionResolver();
|
this.callExpressionResolver = new CallExpressionResolver();
|
||||||
this.typeResolver = new TypeResolver();
|
this.typeResolver = new TypeResolver();
|
||||||
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
||||||
@@ -163,6 +163,7 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
||||||
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
||||||
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
this.descriptorResolver.setStorageManager(storageManager);
|
||||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
declarationResolver.setAnnotationResolver(annotationResolver);
|
declarationResolver.setAnnotationResolver(annotationResolver);
|
||||||
@@ -188,7 +189,6 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
expressionTypingServices.setCallResolver(callResolver);
|
expressionTypingServices.setCallResolver(callResolver);
|
||||||
expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
||||||
expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
||||||
expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
|
|
||||||
expressionTypingServices.setProject(project);
|
expressionTypingServices.setProject(project);
|
||||||
expressionTypingServices.setTypeResolver(typeResolver);
|
expressionTypingServices.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
|
|||||||
@@ -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.calls.autocasts.DataFlowInfo;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||||
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public interface BodiesResolveContext {
|
public interface BodiesResolveContext {
|
||||||
|
StorageManager getStorageManager();
|
||||||
Collection<JetFile> getFiles();
|
Collection<JetFile> getFiles();
|
||||||
Map<JetClassOrObject, MutableClassDescriptor> getClasses();
|
Map<JetClassOrObject, MutableClassDescriptor> getClasses();
|
||||||
Map<JetProperty, PropertyDescriptor> getProperties();
|
Map<JetProperty, PropertyDescriptor> getProperties();
|
||||||
|
|||||||
@@ -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.calls.autocasts.DataFlowInfo;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||||
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -62,6 +63,11 @@ public class CachedBodiesResolveContext implements BodiesResolveContext {
|
|||||||
topDownAnalysisParameters = context.getTopDownAnalysisParameters();
|
topDownAnalysisParameters = context.getTopDownAnalysisParameters();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StorageManager getStorageManager() {
|
||||||
|
return topDownAnalysisParameters.getStorageManager();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<JetFile> getFiles() {
|
public Collection<JetFile> getFiles() {
|
||||||
return files;
|
return files;
|
||||||
|
|||||||
@@ -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.calls.autocasts.DataFlowInfo;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||||
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.io.PrintStream;
|
import java.io.PrintStream;
|
||||||
@@ -118,6 +119,11 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
|
|||||||
return packageFragments;
|
return packageFragments;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StorageManager getStorageManager() {
|
||||||
|
return topDownAnalysisParameters.getStorageManager();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<JetFile> getFiles() {
|
public Collection<JetFile> getFiles() {
|
||||||
return packageFragments.keySet();
|
return packageFragments.keySet();
|
||||||
|
|||||||
+12
-1
@@ -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.storage.StorageManager;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -26,6 +27,8 @@ 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 {
|
||||||
|
@NotNull
|
||||||
|
private final StorageManager storageManager;
|
||||||
@NotNull
|
@NotNull
|
||||||
private final Predicate<PsiFile> analyzeCompletely;
|
private final Predicate<PsiFile> analyzeCompletely;
|
||||||
private final boolean analyzingBootstrapLibrary;
|
private final boolean analyzingBootstrapLibrary;
|
||||||
@@ -34,16 +37,24 @@ public class TopDownAnalysisParameters {
|
|||||||
private final List<AnalyzerScriptParameter> scriptParameters;
|
private final List<AnalyzerScriptParameter> scriptParameters;
|
||||||
|
|
||||||
public TopDownAnalysisParameters(
|
public TopDownAnalysisParameters(
|
||||||
|
@NotNull StorageManager storageManager,
|
||||||
@NotNull Predicate<PsiFile> analyzeCompletely,
|
@NotNull Predicate<PsiFile> analyzeCompletely,
|
||||||
boolean analyzingBootstrapLibrary,
|
boolean analyzingBootstrapLibrary,
|
||||||
boolean declaredLocally,
|
boolean declaredLocally,
|
||||||
@NotNull List<AnalyzerScriptParameter> scriptParameters) {
|
@NotNull List<AnalyzerScriptParameter> scriptParameters
|
||||||
|
) {
|
||||||
|
this.storageManager = storageManager;
|
||||||
this.analyzeCompletely = analyzeCompletely;
|
this.analyzeCompletely = analyzeCompletely;
|
||||||
this.analyzingBootstrapLibrary = analyzingBootstrapLibrary;
|
this.analyzingBootstrapLibrary = analyzingBootstrapLibrary;
|
||||||
this.declaredLocally = declaredLocally;
|
this.declaredLocally = declaredLocally;
|
||||||
this.scriptParameters = scriptParameters;
|
this.scriptParameters = scriptParameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public StorageManager getStorageManager() {
|
||||||
|
return storageManager;
|
||||||
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Predicate<PsiFile> getAnalyzeCompletely() {
|
public Predicate<PsiFile> getAnalyzeCompletely() {
|
||||||
return analyzeCompletely;
|
return analyzeCompletely;
|
||||||
|
|||||||
@@ -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.resolve.scopes.WritableScope;
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingContext;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingContext;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -158,6 +159,7 @@ public class TopDownAnalyzer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void processClassOrObject(
|
public static void processClassOrObject(
|
||||||
|
@NotNull StorageManager storageManager,
|
||||||
@Nullable final WritableScope scope,
|
@Nullable final WritableScope scope,
|
||||||
@NotNull ExpressionTypingContext context,
|
@NotNull ExpressionTypingContext context,
|
||||||
@NotNull final DeclarationDescriptor containingDeclaration,
|
@NotNull final DeclarationDescriptor containingDeclaration,
|
||||||
@@ -168,7 +170,7 @@ public class TopDownAnalyzer {
|
|||||||
PlatformToKotlinClassMap.EMPTY);
|
PlatformToKotlinClassMap.EMPTY);
|
||||||
|
|
||||||
TopDownAnalysisParameters topDownAnalysisParameters =
|
TopDownAnalysisParameters topDownAnalysisParameters =
|
||||||
new TopDownAnalysisParameters(Predicates.equalTo(object.getContainingFile()),
|
new TopDownAnalysisParameters(storageManager, Predicates.equalTo(object.getContainingFile()),
|
||||||
false, true, Collections.<AnalyzerScriptParameter>emptyList());
|
false, true, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
|
|
||||||
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
|
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
|
||||||
|
|||||||
+2
-1
@@ -90,7 +90,8 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
};
|
};
|
||||||
ObservableBindingTrace traceAdapter = new ObservableBindingTrace(temporaryTrace);
|
ObservableBindingTrace traceAdapter = new ObservableBindingTrace(temporaryTrace);
|
||||||
traceAdapter.addHandler(CLASS, handler);
|
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.replaceBindingTrace(traceAdapter).replaceContextDependency(INDEPENDENT),
|
||||||
context.scope.getContainingDeclaration(),
|
context.scope.getContainingDeclaration(),
|
||||||
expression.getObjectDeclaration());
|
expression.getObjectDeclaration());
|
||||||
|
|||||||
+6
-8
@@ -137,12 +137,6 @@ public class ExpressionTypingServices {
|
|||||||
this.annotationResolver = annotationResolver;
|
this.annotationResolver = annotationResolver;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
|
||||||
public void setPlatformToKotlinClassMap(@NotNull PlatformToKotlinClassMap platformToKotlinClassMap) {
|
|
||||||
this.platformToKotlinClassMap = platformToKotlinClassMap;
|
|
||||||
this.expressionTypingFacade = ExpressionTypingVisitorDispatcher.create(storageManager, platformToKotlinClassMap);
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public PlatformToKotlinClassMap getPlatformToKotlinClassMap() {
|
public PlatformToKotlinClassMap getPlatformToKotlinClassMap() {
|
||||||
return platformToKotlinClassMap;
|
return platformToKotlinClassMap;
|
||||||
@@ -153,9 +147,13 @@ public class ExpressionTypingServices {
|
|||||||
this.extensionProvider = extensionProvider;
|
this.extensionProvider = extensionProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
public ExpressionTypingServices(
|
||||||
public void setStorageManager(@NotNull StorageManager storageManager) {
|
@NotNull StorageManager storageManager,
|
||||||
|
@NotNull PlatformToKotlinClassMap platformToKotlinClassMap
|
||||||
|
) {
|
||||||
this.storageManager = storageManager;
|
this.storageManager = storageManager;
|
||||||
|
this.platformToKotlinClassMap = platformToKotlinClassMap;
|
||||||
|
this.expressionTypingFacade = ExpressionTypingVisitorDispatcher.create(storageManager, platformToKotlinClassMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+7
-3
@@ -48,6 +48,7 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
|
|||||||
return new ExpressionTypingVisitorDispatcher(storageManager, platformToKotlinClassMap, writableScope);
|
return new ExpressionTypingVisitorDispatcher(storageManager, platformToKotlinClassMap, writableScope);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private final StorageManager storageManager;
|
||||||
private final BasicExpressionTypingVisitor basic;
|
private final BasicExpressionTypingVisitor basic;
|
||||||
private final ExpressionTypingVisitorForStatements statements;
|
private final ExpressionTypingVisitorForStatements statements;
|
||||||
private final ClosureExpressionsTypingVisitor closures;
|
private final ClosureExpressionsTypingVisitor closures;
|
||||||
@@ -55,14 +56,15 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
|
|||||||
private final PatternMatchingTypingVisitor patterns = new PatternMatchingTypingVisitor(this);
|
private final PatternMatchingTypingVisitor patterns = new PatternMatchingTypingVisitor(this);
|
||||||
|
|
||||||
private ExpressionTypingVisitorDispatcher(StorageManager storageManager, PlatformToKotlinClassMap platformToKotlinClassMap, WritableScope writableScope) {
|
private ExpressionTypingVisitorDispatcher(StorageManager storageManager, PlatformToKotlinClassMap platformToKotlinClassMap, WritableScope writableScope) {
|
||||||
|
this.storageManager = storageManager;
|
||||||
this.basic = new BasicExpressionTypingVisitor(this, platformToKotlinClassMap);
|
this.basic = new BasicExpressionTypingVisitor(this, platformToKotlinClassMap);
|
||||||
if (writableScope != null) {
|
if (writableScope != null) {
|
||||||
this.statements = new ExpressionTypingVisitorForStatements(this, writableScope, basic, controlStructures, patterns);
|
this.statements = new ExpressionTypingVisitorForStatements(storageManager, this, writableScope, basic, controlStructures, patterns);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.statements = null;
|
this.statements = null;
|
||||||
}
|
}
|
||||||
closures = new ClosureExpressionsTypingVisitor(this, storageManager);
|
this.closures = new ClosureExpressionsTypingVisitor(this, storageManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -98,7 +100,9 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
|
|||||||
}
|
}
|
||||||
|
|
||||||
private ExpressionTypingVisitorForStatements createStatementVisitor(ExpressionTypingContext context) {
|
private ExpressionTypingVisitorForStatements createStatementVisitor(ExpressionTypingContext context) {
|
||||||
return new ExpressionTypingVisitorForStatements(this, ExpressionTypingUtils.newWritableScopeImpl(context, "statement scope"), basic, controlStructures, patterns);
|
return new ExpressionTypingVisitorForStatements(storageManager, this,
|
||||||
|
ExpressionTypingUtils.newWritableScopeImpl(context, "statement scope"),
|
||||||
|
basic, controlStructures, patterns);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+6
@@ -39,6 +39,7 @@ import org.jetbrains.jet.lang.types.JetTypeInfo;
|
|||||||
import org.jetbrains.jet.lang.types.TypeUtils;
|
import org.jetbrains.jet.lang.types.TypeUtils;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
import org.jetbrains.jet.lexer.JetTokens;
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
@@ -51,18 +52,21 @@ import static org.jetbrains.jet.lang.types.TypeUtils.noExpectedType;
|
|||||||
|
|
||||||
@SuppressWarnings("SuspiciousMethodCalls")
|
@SuppressWarnings("SuspiciousMethodCalls")
|
||||||
public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisitor {
|
public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisitor {
|
||||||
|
private final StorageManager storageManager;
|
||||||
private final WritableScope scope;
|
private final WritableScope scope;
|
||||||
private final BasicExpressionTypingVisitor basic;
|
private final BasicExpressionTypingVisitor basic;
|
||||||
private final ControlStructureTypingVisitor controlStructures;
|
private final ControlStructureTypingVisitor controlStructures;
|
||||||
private final PatternMatchingTypingVisitor patterns;
|
private final PatternMatchingTypingVisitor patterns;
|
||||||
|
|
||||||
public ExpressionTypingVisitorForStatements(
|
public ExpressionTypingVisitorForStatements(
|
||||||
|
@NotNull StorageManager storageManager,
|
||||||
@NotNull ExpressionTypingInternals facade,
|
@NotNull ExpressionTypingInternals facade,
|
||||||
@NotNull WritableScope scope,
|
@NotNull WritableScope scope,
|
||||||
BasicExpressionTypingVisitor basic,
|
BasicExpressionTypingVisitor basic,
|
||||||
@NotNull ControlStructureTypingVisitor controlStructures,
|
@NotNull ControlStructureTypingVisitor controlStructures,
|
||||||
@NotNull PatternMatchingTypingVisitor patterns) {
|
@NotNull PatternMatchingTypingVisitor patterns) {
|
||||||
super(facade);
|
super(facade);
|
||||||
|
this.storageManager = storageManager;
|
||||||
this.scope = scope;
|
this.scope = scope;
|
||||||
this.basic = basic;
|
this.basic = basic;
|
||||||
this.controlStructures = controlStructures;
|
this.controlStructures = controlStructures;
|
||||||
@@ -86,6 +90,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
|||||||
@Override
|
@Override
|
||||||
public JetTypeInfo visitObjectDeclaration(@NotNull JetObjectDeclaration declaration, ExpressionTypingContext context) {
|
public JetTypeInfo visitObjectDeclaration(@NotNull JetObjectDeclaration declaration, ExpressionTypingContext context) {
|
||||||
TopDownAnalyzer.processClassOrObject(
|
TopDownAnalyzer.processClassOrObject(
|
||||||
|
storageManager,
|
||||||
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), declaration);
|
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), declaration);
|
||||||
return DataFlowUtils.checkStatementType(declaration, context, context.dataFlowInfo);
|
return DataFlowUtils.checkStatementType(declaration, context, context.dataFlowInfo);
|
||||||
}
|
}
|
||||||
@@ -180,6 +185,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
|||||||
@Override
|
@Override
|
||||||
public JetTypeInfo visitClass(@NotNull JetClass klass, ExpressionTypingContext context) {
|
public JetTypeInfo visitClass(@NotNull JetClass klass, ExpressionTypingContext context) {
|
||||||
TopDownAnalyzer.processClassOrObject(
|
TopDownAnalyzer.processClassOrObject(
|
||||||
|
storageManager,
|
||||||
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), klass);
|
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), klass);
|
||||||
return DataFlowUtils.checkStatementType(klass, context, context.dataFlowInfo);
|
return DataFlowUtils.checkStatementType(klass, context, context.dataFlowInfo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
|||||||
import org.jetbrains.jet.lang.resolve.TypeResolver;
|
import org.jetbrains.jet.lang.resolve.TypeResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
||||||
|
import org.jetbrains.jet.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
@@ -42,6 +43,7 @@ public class InjectorForTests {
|
|||||||
private final TypeResolver typeResolver;
|
private final TypeResolver typeResolver;
|
||||||
private final CallResolver callResolver;
|
private final CallResolver callResolver;
|
||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
|
private final LockBasedStorageManager lockBasedStorageManager;
|
||||||
private final KotlinBuiltIns kotlinBuiltIns;
|
private final KotlinBuiltIns kotlinBuiltIns;
|
||||||
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
private final PlatformToKotlinClassMap platformToKotlinClassMap;
|
||||||
private final Project project;
|
private final Project project;
|
||||||
@@ -58,12 +60,13 @@ public class InjectorForTests {
|
|||||||
@NotNull ModuleDescriptor moduleDescriptor
|
@NotNull ModuleDescriptor moduleDescriptor
|
||||||
) {
|
) {
|
||||||
this.descriptorResolver = new DescriptorResolver();
|
this.descriptorResolver = new DescriptorResolver();
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.lockBasedStorageManager = new LockBasedStorageManager();
|
||||||
|
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
|
||||||
|
this.expressionTypingServices = new ExpressionTypingServices(lockBasedStorageManager, platformToKotlinClassMap);
|
||||||
this.typeResolver = new TypeResolver();
|
this.typeResolver = new TypeResolver();
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.kotlinBuiltIns = KotlinBuiltIns.getInstance();
|
this.kotlinBuiltIns = KotlinBuiltIns.getInstance();
|
||||||
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
|
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.moduleDescriptor = moduleDescriptor;
|
this.moduleDescriptor = moduleDescriptor;
|
||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
@@ -76,6 +79,7 @@ public class InjectorForTests {
|
|||||||
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
||||||
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
||||||
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
this.descriptorResolver.setStorageManager(lockBasedStorageManager);
|
||||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
this.expressionTypingServices.setAnnotationResolver(annotationResolver);
|
this.expressionTypingServices.setAnnotationResolver(annotationResolver);
|
||||||
@@ -83,7 +87,6 @@ public class InjectorForTests {
|
|||||||
this.expressionTypingServices.setCallResolver(callResolver);
|
this.expressionTypingServices.setCallResolver(callResolver);
|
||||||
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
this.expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
||||||
this.expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
this.expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
||||||
this.expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
|
|
||||||
this.expressionTypingServices.setProject(project);
|
this.expressionTypingServices.setProject(project);
|
||||||
this.expressionTypingServices.setTypeResolver(typeResolver);
|
this.expressionTypingServices.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedClass
|
|||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.resolve.*;
|
import org.jetbrains.jet.lang.resolve.*;
|
||||||
|
import org.jetbrains.jet.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.jet.test.TestCaseWithTmpdir;
|
import org.jetbrains.jet.test.TestCaseWithTmpdir;
|
||||||
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
|
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
@@ -141,7 +142,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
|
|||||||
InjectorForTopDownAnalyzerForJvm injectorForAnalyzer = new InjectorForTopDownAnalyzerForJvm(
|
InjectorForTopDownAnalyzerForJvm injectorForAnalyzer = new InjectorForTopDownAnalyzerForJvm(
|
||||||
environment.getProject(),
|
environment.getProject(),
|
||||||
new TopDownAnalysisParameters(
|
new TopDownAnalysisParameters(
|
||||||
Predicates.<PsiFile>alwaysFalse(), false, false, Collections.<AnalyzerScriptParameter>emptyList()),
|
new LockBasedStorageManager(), Predicates.<PsiFile>alwaysFalse(), false, false, Collections.<AnalyzerScriptParameter>emptyList()),
|
||||||
trace,
|
trace,
|
||||||
module);
|
module);
|
||||||
|
|
||||||
|
|||||||
@@ -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.java.AnalyzerFacadeForJVM;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
import org.jetbrains.jet.lang.resolve.name.SpecialNames;
|
import org.jetbrains.jet.lang.resolve.name.SpecialNames;
|
||||||
|
import org.jetbrains.jet.storage.LockBasedStorageManager;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -53,7 +54,7 @@ public class LazyResolveTestUtil {
|
|||||||
JetTestUtils.newTrace(environment);
|
JetTestUtils.newTrace(environment);
|
||||||
|
|
||||||
TopDownAnalysisParameters params = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters params = new TopDownAnalysisParameters(
|
||||||
Predicates.<PsiFile>alwaysTrue(), false, false, Collections.<AnalyzerScriptParameter>emptyList());
|
new LockBasedStorageManager(), Predicates.<PsiFile>alwaysTrue(), false, false, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
|
CliLightClassGenerationSupport support = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject());
|
||||||
BindingTrace sharedTrace = support.getTrace();
|
BindingTrace sharedTrace = support.getTrace();
|
||||||
ModuleDescriptorImpl sharedModule = support.getModule();
|
ModuleDescriptorImpl sharedModule = support.getModule();
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ import org.jetbrains.jet.codegen.state.JetTypeMapper;
|
|||||||
import org.jetbrains.jet.di.DependencyInjectorGenerator;
|
import org.jetbrains.jet.di.DependencyInjectorGenerator;
|
||||||
import org.jetbrains.jet.di.GivenExpression;
|
import org.jetbrains.jet.di.GivenExpression;
|
||||||
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
|
import org.jetbrains.jet.di.InjectorForTopDownAnalyzer;
|
||||||
import org.jetbrains.jet.di.InstantiateType;
|
|
||||||
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
|
||||||
@@ -98,6 +97,7 @@ public class GenerateInjectors {
|
|||||||
generator.addPublicField(JetImportsFactory.class);
|
generator.addPublicField(JetImportsFactory.class);
|
||||||
generator.addField(CallResolverExtensionProvider.class);
|
generator.addField(CallResolverExtensionProvider.class);
|
||||||
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
|
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);
|
generator.configure("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForLazyResolve", GenerateInjectors.class);
|
||||||
return generator;
|
return generator;
|
||||||
}
|
}
|
||||||
@@ -179,7 +179,7 @@ public class GenerateInjectors {
|
|||||||
generator.addPublicField(ControlFlowAnalyzer.class);
|
generator.addPublicField(ControlFlowAnalyzer.class);
|
||||||
generator.addPublicField(DeclarationsChecker.class);
|
generator.addPublicField(DeclarationsChecker.class);
|
||||||
generator.addPublicField(DescriptorResolver.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);
|
generator.addField(CallResolverExtensionProvider.class);
|
||||||
|
|
||||||
// Parameters
|
// Parameters
|
||||||
@@ -196,6 +196,7 @@ public class GenerateInjectors {
|
|||||||
// Fields
|
// Fields
|
||||||
generator.addPublicField(ExpressionTypingServices.class);
|
generator.addPublicField(ExpressionTypingServices.class);
|
||||||
generator.addField(CallResolverExtensionProvider.class);
|
generator.addField(CallResolverExtensionProvider.class);
|
||||||
|
generator.addField(LockBasedStorageManager.class);
|
||||||
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
|
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
|
||||||
|
|
||||||
// Parameters
|
// Parameters
|
||||||
@@ -215,6 +216,7 @@ public class GenerateInjectors {
|
|||||||
generator.addPublicField(TypeResolver.class);
|
generator.addPublicField(TypeResolver.class);
|
||||||
generator.addPublicField(CallResolver.class);
|
generator.addPublicField(CallResolver.class);
|
||||||
generator.addField(CallResolverExtensionProvider.class);
|
generator.addField(CallResolverExtensionProvider.class);
|
||||||
|
generator.addField(LockBasedStorageManager.class);
|
||||||
generator.addField(true, KotlinBuiltIns.class, null, new GivenExpression("KotlinBuiltIns.getInstance()"));
|
generator.addField(true, KotlinBuiltIns.class, null, new GivenExpression("KotlinBuiltIns.getInstance()"));
|
||||||
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
|
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
|
||||||
|
|
||||||
@@ -256,6 +258,7 @@ public class GenerateInjectors {
|
|||||||
generator.addField(CallResolverExtensionProvider.class);
|
generator.addField(CallResolverExtensionProvider.class);
|
||||||
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
|
generator.addField(false, PlatformToKotlinClassMap.class, null, new GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"));
|
||||||
generator.addField(FunctionAnalyzerExtension.class);
|
generator.addField(FunctionAnalyzerExtension.class);
|
||||||
|
generator.addField(false, StorageManager.class, null, new GivenExpression("topDownAnalysisParameters.getStorageManager()"));
|
||||||
|
|
||||||
// Parameters
|
// Parameters
|
||||||
generator.addPublicParameter(Project.class);
|
generator.addPublicParameter(Project.class);
|
||||||
|
|||||||
@@ -43,14 +43,13 @@ import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
|||||||
import org.jetbrains.jet.lang.types.TypeConstructor;
|
import org.jetbrains.jet.lang.types.TypeConstructor;
|
||||||
import org.jetbrains.jet.storage.LazyResolveStorageManager;
|
import org.jetbrains.jet.storage.LazyResolveStorageManager;
|
||||||
import org.jetbrains.jet.storage.MemoizedFunctionToNotNull;
|
import org.jetbrains.jet.storage.MemoizedFunctionToNotNull;
|
||||||
|
import org.jetbrains.jet.storage.StorageManager;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class ResolveElementCache {
|
public class ResolveElementCache {
|
||||||
private static final BodyResolveContextForLazy EMPTY_CONTEXT = new BodyResolveContextForLazy(Functions.<JetScope>constant(null));
|
|
||||||
|
|
||||||
private final CachedValue<MemoizedFunctionToNotNull<JetElement, BindingContext>> additionalResolveCache;
|
private final CachedValue<MemoizedFunctionToNotNull<JetElement, BindingContext>> additionalResolveCache;
|
||||||
private final ResolveSession resolveSession;
|
private final ResolveSession resolveSession;
|
||||||
|
|
||||||
@@ -225,12 +224,13 @@ public class ResolveElementCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void delegationSpecifierAdditionalResolve(
|
private static void delegationSpecifierAdditionalResolve(
|
||||||
KotlinCodeAnalyzer analyzer,
|
ResolveSession resolveSession,
|
||||||
JetDelegationSpecifierList specifier, BindingTrace trace, JetFile file) {
|
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();
|
JetClassOrObject classOrObject = (JetClassOrObject) specifier.getParent();
|
||||||
LazyClassDescriptor descriptor = (LazyClassDescriptor) analyzer.resolveToDescriptor(classOrObject);
|
LazyClassDescriptor descriptor = (LazyClassDescriptor) resolveSession.resolveToDescriptor(classOrObject);
|
||||||
|
|
||||||
// Activate resolving of supertypes
|
// Activate resolving of supertypes
|
||||||
descriptor.getTypeConstructor().getSupertypes();
|
descriptor.getTypeConstructor().getSupertypes();
|
||||||
@@ -245,13 +245,16 @@ public class ResolveElementCache {
|
|||||||
final JetScope propertyResolutionScope = resolveSession.getInjector().getScopeProvider().getResolutionScopeForDeclaration(
|
final JetScope propertyResolutionScope = resolveSession.getInjector().getScopeProvider().getResolutionScopeForDeclaration(
|
||||||
jetProperty);
|
jetProperty);
|
||||||
|
|
||||||
BodyResolveContextForLazy bodyResolveContext = new BodyResolveContextForLazy(new Function<JetDeclaration, JetScope>() {
|
BodyResolveContextForLazy bodyResolveContext = new BodyResolveContextForLazy(
|
||||||
@Override
|
resolveSession.getStorageManager(),
|
||||||
public JetScope apply(JetDeclaration declaration) {
|
new Function<JetDeclaration, JetScope>() {
|
||||||
assert declaration.getParent() == jetProperty : "Must be called only for property accessors, but called for " + declaration;
|
@Override
|
||||||
return propertyResolutionScope;
|
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());
|
BodyResolver bodyResolver = createBodyResolver(trace, file, bodyResolveContext, resolveSession.getModuleDescriptor());
|
||||||
PropertyDescriptor descriptor = (PropertyDescriptor) resolveSession.resolveToDescriptor(jetProperty);
|
PropertyDescriptor descriptor = (PropertyDescriptor) resolveSession.resolveToDescriptor(jetProperty);
|
||||||
|
|
||||||
@@ -274,7 +277,8 @@ public class ResolveElementCache {
|
|||||||
BindingTrace trace,
|
BindingTrace trace,
|
||||||
JetFile file
|
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);
|
JetScope scope = resolveSession.getInjector().getScopeProvider().getResolutionScopeForDeclaration(namedFunction);
|
||||||
FunctionDescriptor functionDescriptor = (FunctionDescriptor) resolveSession.resolveToDescriptor(namedFunction);
|
FunctionDescriptor functionDescriptor = (FunctionDescriptor) resolveSession.resolveToDescriptor(namedFunction);
|
||||||
bodyResolver.resolveFunctionBody(trace, namedFunction, functionDescriptor, scope);
|
bodyResolver.resolveFunctionBody(trace, namedFunction, functionDescriptor, scope);
|
||||||
@@ -286,7 +290,8 @@ public class ResolveElementCache {
|
|||||||
BindingTrace trace,
|
BindingTrace trace,
|
||||||
JetFile file
|
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);
|
JetScope scope = resolveSession.getInjector().getScopeProvider().getResolutionScopeForDeclaration(klass);
|
||||||
|
|
||||||
ClassDescriptor classDescriptor = (ClassDescriptor) resolveSession.resolveToDescriptor(klass);
|
ClassDescriptor classDescriptor = (ClassDescriptor) resolveSession.resolveToDescriptor(klass);
|
||||||
@@ -297,14 +302,15 @@ public class ResolveElementCache {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static boolean initializerAdditionalResolve(
|
private static boolean initializerAdditionalResolve(
|
||||||
KotlinCodeAnalyzer analyzer,
|
ResolveSession resolveSession,
|
||||||
JetClassInitializer classInitializer,
|
JetClassInitializer classInitializer,
|
||||||
BindingTrace trace,
|
BindingTrace trace,
|
||||||
JetFile file
|
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);
|
JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(classInitializer, JetClassOrObject.class);
|
||||||
LazyClassDescriptor classOrObjectDescriptor = (LazyClassDescriptor) analyzer.resolveToDescriptor(classOrObject);
|
LazyClassDescriptor classOrObjectDescriptor = (LazyClassDescriptor) resolveSession.resolveToDescriptor(classOrObject);
|
||||||
bodyResolver.resolveAnonymousInitializers(classOrObject, classOrObjectDescriptor.getUnsubstitutedPrimaryConstructor(),
|
bodyResolver.resolveAnonymousInitializers(classOrObject, classOrObjectDescriptor.getUnsubstitutedPrimaryConstructor(),
|
||||||
classOrObjectDescriptor.getScopeForPropertyInitializerResolution());
|
classOrObjectDescriptor.getScopeForPropertyInitializerResolution());
|
||||||
|
|
||||||
@@ -314,17 +320,19 @@ public class ResolveElementCache {
|
|||||||
private static BodyResolver createBodyResolver(BindingTrace trace, JetFile file, BodyResolveContextForLazy bodyResolveContext,
|
private static BodyResolver createBodyResolver(BindingTrace trace, JetFile file, BodyResolveContextForLazy bodyResolveContext,
|
||||||
ModuleDescriptor module) {
|
ModuleDescriptor module) {
|
||||||
TopDownAnalysisParameters parameters = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters parameters = new TopDownAnalysisParameters(
|
||||||
|
bodyResolveContext.getStorageManager(),
|
||||||
Predicates.<PsiFile>alwaysTrue(), false, true, Collections.<AnalyzerScriptParameter>emptyList());
|
Predicates.<PsiFile>alwaysTrue(), false, true, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
InjectorForBodyResolve bodyResolve = new InjectorForBodyResolve(file.getProject(), parameters, trace, bodyResolveContext, module);
|
InjectorForBodyResolve bodyResolve = new InjectorForBodyResolve(file.getProject(), parameters, trace, bodyResolveContext, module);
|
||||||
return bodyResolve.getBodyResolver();
|
return bodyResolve.getBodyResolver();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static BodyResolver createBodyResolverWithEmptyContext(
|
private static BodyResolver createBodyResolverWithEmptyContext(
|
||||||
|
StorageManager storageManager,
|
||||||
BindingTrace trace,
|
BindingTrace trace,
|
||||||
JetFile file,
|
JetFile file,
|
||||||
ModuleDescriptor module
|
ModuleDescriptor module
|
||||||
) {
|
) {
|
||||||
return createBodyResolver(trace, file, EMPTY_CONTEXT, module);
|
return createBodyResolver(trace, file, new BodyResolveContextForLazy(storageManager, Functions.<JetScope>constant(null)), module);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static JetScope getExpressionResolutionScope(@NotNull ResolveSession resolveSession, @NotNull JetExpression expression) {
|
private static JetScope getExpressionResolutionScope(@NotNull ResolveSession resolveSession, @NotNull JetExpression expression) {
|
||||||
@@ -413,12 +421,19 @@ public class ResolveElementCache {
|
|||||||
|
|
||||||
private static class BodyResolveContextForLazy implements BodiesResolveContext {
|
private static class BodyResolveContextForLazy implements BodiesResolveContext {
|
||||||
|
|
||||||
|
private final StorageManager storageManager;
|
||||||
private final Function<? super JetDeclaration, JetScope> declaringScopes;
|
private final Function<? super JetDeclaration, JetScope> declaringScopes;
|
||||||
|
|
||||||
private BodyResolveContextForLazy(@NotNull Function<? super JetDeclaration, JetScope> declaringScopes) {
|
private BodyResolveContextForLazy(StorageManager storageManager, @NotNull Function<? super JetDeclaration, JetScope> declaringScopes) {
|
||||||
|
this.storageManager = storageManager;
|
||||||
this.declaringScopes = declaringScopes;
|
this.declaringScopes = declaringScopes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StorageManager getStorageManager() {
|
||||||
|
return storageManager;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<JetFile> getFiles() {
|
public Collection<JetFile> getFiles() {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
|
|||||||
@@ -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.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
import org.jetbrains.jet.renderer.DescriptorRenderer;
|
||||||
|
import org.jetbrains.jet.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.jet.utils.ExceptionUtils;
|
import org.jetbrains.jet.utils.ExceptionUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -84,6 +85,7 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
||||||
|
new LockBasedStorageManager(),
|
||||||
Predicates.<PsiFile>alwaysFalse(), true, false, Collections.<AnalyzerScriptParameter>emptyList());
|
Predicates.<PsiFile>alwaysFalse(), true, false, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
ModuleDescriptorImpl module = new ModuleDescriptorImpl(
|
ModuleDescriptorImpl module = new ModuleDescriptorImpl(
|
||||||
Name.special("<fake_module>"), Collections.<ImportPath>emptyList(), PlatformToKotlinClassMap.EMPTY);
|
Name.special("<fake_module>"), Collections.<ImportPath>emptyList(), PlatformToKotlinClassMap.EMPTY);
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import org.jetbrains.jet.lang.resolve.BodyResolver;
|
|||||||
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
|
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
|
||||||
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
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 org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
|
||||||
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;
|
||||||
@@ -61,7 +61,7 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
private final ControlFlowAnalyzer controlFlowAnalyzer;
|
||||||
private final DeclarationsChecker declarationsChecker;
|
private final DeclarationsChecker declarationsChecker;
|
||||||
private final DescriptorResolver descriptorResolver;
|
private final DescriptorResolver descriptorResolver;
|
||||||
private final LockBasedStorageManager storageManager;
|
private final StorageManager storageManager;
|
||||||
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
private final CallResolverExtensionProvider callResolverExtensionProvider;
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
@@ -101,7 +101,7 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
|
||||||
this.declarationsChecker = new DeclarationsChecker();
|
this.declarationsChecker = new DeclarationsChecker();
|
||||||
this.descriptorResolver = new DescriptorResolver();
|
this.descriptorResolver = new DescriptorResolver();
|
||||||
this.storageManager = new LockBasedStorageManager();
|
this.storageManager = topDownAnalysisParameters.getStorageManager();
|
||||||
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
@@ -114,7 +114,7 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
this.argumentTypeResolver = new ArgumentTypeResolver();
|
this.argumentTypeResolver = new ArgumentTypeResolver();
|
||||||
this.expressionTypingServices = new ExpressionTypingServices();
|
this.expressionTypingServices = new ExpressionTypingServices(storageManager, platformToKotlinClassMap);
|
||||||
this.callExpressionResolver = new CallExpressionResolver();
|
this.callExpressionResolver = new CallExpressionResolver();
|
||||||
this.typeResolver = new TypeResolver();
|
this.typeResolver = new TypeResolver();
|
||||||
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
|
||||||
@@ -162,6 +162,7 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
this.descriptorResolver.setAnnotationResolver(annotationResolver);
|
||||||
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
|
||||||
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
|
||||||
|
this.descriptorResolver.setStorageManager(storageManager);
|
||||||
this.descriptorResolver.setTypeResolver(typeResolver);
|
this.descriptorResolver.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
declarationResolver.setAnnotationResolver(annotationResolver);
|
declarationResolver.setAnnotationResolver(annotationResolver);
|
||||||
@@ -187,7 +188,6 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
expressionTypingServices.setCallResolver(callResolver);
|
expressionTypingServices.setCallResolver(callResolver);
|
||||||
expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
expressionTypingServices.setDescriptorResolver(descriptorResolver);
|
||||||
expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
|
||||||
expressionTypingServices.setPlatformToKotlinClassMap(platformToKotlinClassMap);
|
|
||||||
expressionTypingServices.setProject(project);
|
expressionTypingServices.setProject(project);
|
||||||
expressionTypingServices.setTypeResolver(typeResolver);
|
expressionTypingServices.setTypeResolver(typeResolver);
|
||||||
|
|
||||||
|
|||||||
@@ -34,10 +34,10 @@ 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.storage.LockBasedLazyResolveStorageManager;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
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.jet.storage.LockBasedLazyResolveStorageManager;
|
||||||
import org.jetbrains.jet.storage.LockBasedStorageManager;
|
import org.jetbrains.jet.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.k2js.config.Config;
|
import org.jetbrains.k2js.config.Config;
|
||||||
|
|
||||||
@@ -91,7 +91,7 @@ public final class AnalyzerFacadeForJS {
|
|||||||
Predicate<PsiFile> completely = Predicates.and(notLibFiles(config.getLibFiles()), filesToAnalyzeCompletely);
|
Predicate<PsiFile> completely = Predicates.and(notLibFiles(config.getLibFiles()), filesToAnalyzeCompletely);
|
||||||
|
|
||||||
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
|
||||||
completely, false, false, Collections.<AnalyzerScriptParameter>emptyList());
|
new LockBasedStorageManager(), completely, false, false, Collections.<AnalyzerScriptParameter>emptyList());
|
||||||
|
|
||||||
ModuleDescriptor libraryModule = config.getLibraryModule();
|
ModuleDescriptor libraryModule = config.getLibraryModule();
|
||||||
if (libraryModule != null) {
|
if (libraryModule != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user