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);
traceAdapter.addHandler(CLASS, handler);
components.localClassifierAnalyzer.processClassOrObject(components.globalContext,
null, // don't need to add classifier of object literal to any scope
components.localClassifierAnalyzer.processClassOrObject(null, // don't need to add classifier of object literal to any scope
context.replaceBindingTrace(traceAdapter).replaceContextDependency(INDEPENDENT),
context.scope.getContainingDeclaration(),
expression.getObjectDeclaration(),
components.additionalCheckerProvider,
components.dynamicTypesSettings);
expression.getObjectDeclaration());
temporaryTrace.commit();
DataFlowInfo resultFlowInfo = context.dataFlowInfo;
for (JetDelegationSpecifier specifier: expression.getObjectDeclaration().getDelegationSpecifiers()) {
@@ -96,10 +96,9 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
@Override
public JetTypeInfo visitObjectDeclaration(@NotNull JetObjectDeclaration declaration, ExpressionTypingContext context) {
components.localClassifierAnalyzer.processClassOrObject(
components.globalContext,
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), declaration,
components.additionalCheckerProvider,
components.dynamicTypesSettings);
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT),
scope.getContainingDeclaration(),
declaration);
return TypeInfoFactoryPackage.createTypeInfo(DataFlowUtils.checkStatementType(declaration, context), context);
}
@@ -195,10 +194,9 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito
@Override
public JetTypeInfo visitClass(@NotNull JetClass klass, ExpressionTypingContext context) {
components.localClassifierAnalyzer.processClassOrObject(
components.globalContext,
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), klass,
components.additionalCheckerProvider,
components.dynamicTypesSettings);
scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT),
scope.getContainingDeclaration(),
klass);
return TypeInfoFactoryPackage.createTypeInfo(DataFlowUtils.checkStatementType(klass, context), context);
}
@@ -45,19 +45,20 @@ import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.types.DynamicTypesSettings
public class LocalClassifierAnalyzer(
val globalContext: GlobalContext,
val storageManager: StorageManager,
val descriptorResolver: DescriptorResolver,
val funcionDescriptorResolver: FunctionDescriptorResolver,
val typeResolver: TypeResolver,
val annotationResolver: AnnotationResolver
val annotationResolver: AnnotationResolver,
val additionalCheckerProvider: AdditionalCheckerProvider,
val dynamicTypesSettings: DynamicTypesSettings
) {
fun processClassOrObject(
globalContext: GlobalContext,
scope: WritableScope?,
context: ExpressionTypingContext,
containingDeclaration: DeclarationDescriptor,
classOrObject: JetClassOrObject,
additionalCheckerProvider: AdditionalCheckerProvider,
dynamicTypesSettings: DynamicTypesSettings
classOrObject: JetClassOrObject
) {
val module = DescriptorUtils.getContainingModule(containingDeclaration)
val moduleContext = globalContext.withProject(classOrObject.getProject()).withModule(module)
@@ -70,7 +71,7 @@ public class LocalClassifierAnalyzer(
scope,
classOrObject,
containingDeclaration,
globalContext.storageManager,
storageManager,
context,
module,
descriptorResolver,