Components across the project use StorageManager
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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<JetFile> getFiles();
|
||||
Map<JetClassOrObject, MutableClassDescriptor> getClasses();
|
||||
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.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<JetFile> getFiles() {
|
||||
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.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<JetFile> getFiles() {
|
||||
return packageFragments.keySet();
|
||||
|
||||
+12
-1
@@ -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<PsiFile> analyzeCompletely;
|
||||
private final boolean analyzingBootstrapLibrary;
|
||||
@@ -34,16 +37,24 @@ public class TopDownAnalysisParameters {
|
||||
private final List<AnalyzerScriptParameter> scriptParameters;
|
||||
|
||||
public TopDownAnalysisParameters(
|
||||
@NotNull StorageManager storageManager,
|
||||
@NotNull Predicate<PsiFile> analyzeCompletely,
|
||||
boolean analyzingBootstrapLibrary,
|
||||
boolean declaredLocally,
|
||||
@NotNull List<AnalyzerScriptParameter> scriptParameters) {
|
||||
@NotNull List<AnalyzerScriptParameter> 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<PsiFile> getAnalyzeCompletely() {
|
||||
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.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.<AnalyzerScriptParameter>emptyList());
|
||||
|
||||
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
|
||||
|
||||
+2
-1
@@ -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());
|
||||
|
||||
+6
-8
@@ -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
|
||||
|
||||
+7
-3
@@ -48,6 +48,7 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
|
||||
return new ExpressionTypingVisitorDispatcher(storageManager, platformToKotlinClassMap, writableScope);
|
||||
}
|
||||
|
||||
private final StorageManager storageManager;
|
||||
private final BasicExpressionTypingVisitor basic;
|
||||
private final ExpressionTypingVisitorForStatements statements;
|
||||
private final ClosureExpressionsTypingVisitor closures;
|
||||
@@ -55,14 +56,15 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
|
||||
private final PatternMatchingTypingVisitor patterns = new PatternMatchingTypingVisitor(this);
|
||||
|
||||
private ExpressionTypingVisitorDispatcher(StorageManager storageManager, PlatformToKotlinClassMap platformToKotlinClassMap, WritableScope writableScope) {
|
||||
this.storageManager = storageManager;
|
||||
this.basic = new BasicExpressionTypingVisitor(this, platformToKotlinClassMap);
|
||||
if (writableScope != null) {
|
||||
this.statements = new ExpressionTypingVisitorForStatements(this, writableScope, basic, controlStructures, patterns);
|
||||
this.statements = new ExpressionTypingVisitorForStatements(storageManager, this, writableScope, basic, controlStructures, patterns);
|
||||
}
|
||||
else {
|
||||
this.statements = null;
|
||||
}
|
||||
closures = new ClosureExpressionsTypingVisitor(this, storageManager);
|
||||
this.closures = new ClosureExpressionsTypingVisitor(this, storageManager);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -98,7 +100,9 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor<JetTypeInfo, E
|
||||
}
|
||||
|
||||
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
|
||||
|
||||
+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.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.lexer.JetTokens;
|
||||
import org.jetbrains.jet.storage.StorageManager;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
@@ -51,18 +52,21 @@ import static org.jetbrains.jet.lang.types.TypeUtils.noExpectedType;
|
||||
|
||||
@SuppressWarnings("SuspiciousMethodCalls")
|
||||
public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisitor {
|
||||
private final StorageManager storageManager;
|
||||
private final WritableScope scope;
|
||||
private final BasicExpressionTypingVisitor basic;
|
||||
private final ControlStructureTypingVisitor controlStructures;
|
||||
private final PatternMatchingTypingVisitor patterns;
|
||||
|
||||
public ExpressionTypingVisitorForStatements(
|
||||
@NotNull StorageManager storageManager,
|
||||
@NotNull ExpressionTypingInternals facade,
|
||||
@NotNull WritableScope scope,
|
||||
BasicExpressionTypingVisitor basic,
|
||||
@NotNull ControlStructureTypingVisitor controlStructures,
|
||||
@NotNull PatternMatchingTypingVisitor patterns) {
|
||||
super(facade);
|
||||
this.storageManager = storageManager;
|
||||
this.scope = scope;
|
||||
this.basic = basic;
|
||||
this.controlStructures = controlStructures;
|
||||
@@ -86,6 +90,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
||||
@Override
|
||||
public JetTypeInfo visitObjectDeclaration(@NotNull JetObjectDeclaration declaration, ExpressionTypingContext context) {
|
||||
TopDownAnalyzer.processClassOrObject(
|
||||
storageManager,
|
||||
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), declaration);
|
||||
return DataFlowUtils.checkStatementType(declaration, context, context.dataFlowInfo);
|
||||
}
|
||||
@@ -180,6 +185,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
|
||||
@Override
|
||||
public JetTypeInfo visitClass(@NotNull JetClass klass, ExpressionTypingContext context) {
|
||||
TopDownAnalyzer.processClassOrObject(
|
||||
storageManager,
|
||||
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), klass);
|
||||
return DataFlowUtils.checkStatementType(klass, context, context.dataFlowInfo);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user