LocalClassifierAnalyzer dependencies

This commit is contained in:
Ilya Ryzhenkov
2015-07-17 20:00:34 +03:00
parent 5398de22f9
commit 04e71234a1
3 changed files with 15 additions and 19 deletions
@@ -642,13 +642,10 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
}; };
ObservableBindingTrace traceAdapter = new ObservableBindingTrace(temporaryTrace); ObservableBindingTrace traceAdapter = new ObservableBindingTrace(temporaryTrace);
traceAdapter.addHandler(CLASS, handler); traceAdapter.addHandler(CLASS, handler);
components.localClassifierAnalyzer.processClassOrObject(components.globalContext, components.localClassifierAnalyzer.processClassOrObject(null, // don't need to add classifier of object literal to any scope
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());
components.additionalCheckerProvider,
components.dynamicTypesSettings);
temporaryTrace.commit(); temporaryTrace.commit();
DataFlowInfo resultFlowInfo = context.dataFlowInfo; DataFlowInfo resultFlowInfo = context.dataFlowInfo;
for (JetDelegationSpecifier specifier: expression.getObjectDeclaration().getDelegationSpecifiers()) { for (JetDelegationSpecifier specifier: expression.getObjectDeclaration().getDelegationSpecifiers()) {
@@ -96,10 +96,9 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
@Override @Override
public JetTypeInfo visitObjectDeclaration(@NotNull JetObjectDeclaration declaration, ExpressionTypingContext context) { public JetTypeInfo visitObjectDeclaration(@NotNull JetObjectDeclaration declaration, ExpressionTypingContext context) {
components.localClassifierAnalyzer.processClassOrObject( components.localClassifierAnalyzer.processClassOrObject(
components.globalContext, scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT),
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), declaration, scope.getContainingDeclaration(),
components.additionalCheckerProvider, declaration);
components.dynamicTypesSettings);
return TypeInfoFactoryPackage.createTypeInfo(DataFlowUtils.checkStatementType(declaration, context), context); return TypeInfoFactoryPackage.createTypeInfo(DataFlowUtils.checkStatementType(declaration, context), context);
} }
@@ -195,10 +194,9 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
@Override @Override
public JetTypeInfo visitClass(@NotNull JetClass klass, ExpressionTypingContext context) { public JetTypeInfo visitClass(@NotNull JetClass klass, ExpressionTypingContext context) {
components.localClassifierAnalyzer.processClassOrObject( components.localClassifierAnalyzer.processClassOrObject(
components.globalContext, scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT),
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), klass, scope.getContainingDeclaration(),
components.additionalCheckerProvider, klass);
components.dynamicTypesSettings);
return TypeInfoFactoryPackage.createTypeInfo(DataFlowUtils.checkStatementType(klass, context), context); return TypeInfoFactoryPackage.createTypeInfo(DataFlowUtils.checkStatementType(klass, context), context);
} }
@@ -45,19 +45,20 @@ import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.types.DynamicTypesSettings import org.jetbrains.kotlin.types.DynamicTypesSettings
public class LocalClassifierAnalyzer( public class LocalClassifierAnalyzer(
val globalContext: GlobalContext,
val storageManager: StorageManager,
val descriptorResolver: DescriptorResolver, val descriptorResolver: DescriptorResolver,
val funcionDescriptorResolver: FunctionDescriptorResolver, val funcionDescriptorResolver: FunctionDescriptorResolver,
val typeResolver: TypeResolver, val typeResolver: TypeResolver,
val annotationResolver: AnnotationResolver val annotationResolver: AnnotationResolver,
val additionalCheckerProvider: AdditionalCheckerProvider,
val dynamicTypesSettings: DynamicTypesSettings
) { ) {
fun processClassOrObject( fun processClassOrObject(
globalContext: GlobalContext,
scope: WritableScope?, scope: WritableScope?,
context: ExpressionTypingContext, context: ExpressionTypingContext,
containingDeclaration: DeclarationDescriptor, containingDeclaration: DeclarationDescriptor,
classOrObject: JetClassOrObject, classOrObject: JetClassOrObject
additionalCheckerProvider: AdditionalCheckerProvider,
dynamicTypesSettings: DynamicTypesSettings
) { ) {
val module = DescriptorUtils.getContainingModule(containingDeclaration) val module = DescriptorUtils.getContainingModule(containingDeclaration)
val moduleContext = globalContext.withProject(classOrObject.getProject()).withModule(module) val moduleContext = globalContext.withProject(classOrObject.getProject()).withModule(module)
@@ -70,7 +71,7 @@ public class LocalClassifierAnalyzer(
scope, scope,
classOrObject, classOrObject,
containingDeclaration, containingDeclaration,
globalContext.storageManager, storageManager,
context, context,
module, module,
descriptorResolver, descriptorResolver,