diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java index 096af671945..46d61d85534 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java @@ -51,6 +51,7 @@ import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.DynamicTypesSettings; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.DescriptorResolver; @@ -113,6 +114,7 @@ public class InjectorForLazyResolveWithJava { private final DynamicTypesSettings dynamicTypesSettings; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; @@ -181,6 +183,7 @@ public class InjectorForLazyResolveWithJava { this.dynamicTypesSettings = new DynamicTypesSettings(); this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(module); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); @@ -259,6 +262,7 @@ public class InjectorForLazyResolveWithJava { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java index 3ad340ee829..07a09531bd3 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java @@ -54,6 +54,7 @@ import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.DynamicTypesSettings; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.DescriptorResolver; @@ -131,6 +132,7 @@ public class InjectorForReplWithJava { private final DynamicTypesSettings dynamicTypesSettings; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; @@ -216,6 +218,7 @@ public class InjectorForReplWithJava { this.dynamicTypesSettings = new DynamicTypesSettings(); this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(module); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); @@ -316,6 +319,7 @@ public class InjectorForReplWithJava { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java index 616d231f312..974986f86b2 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java @@ -53,6 +53,7 @@ import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.DynamicTypesSettings; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.DescriptorResolver; @@ -130,6 +131,7 @@ public class InjectorForTopDownAnalyzerForJvm { private final DynamicTypesSettings dynamicTypesSettings; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; @@ -214,6 +216,7 @@ public class InjectorForTopDownAnalyzerForJvm { this.dynamicTypesSettings = new DynamicTypesSettings(); this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(module); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); @@ -315,6 +318,7 @@ public class InjectorForTopDownAnalyzerForJvm { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForBodyResolve.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForBodyResolve.java index 131b6f67aa8..c8e4132a0de 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForBodyResolve.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForBodyResolve.java @@ -35,6 +35,7 @@ import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.DynamicTypesSettings; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.DescriptorResolver; @@ -77,6 +78,7 @@ public class InjectorForBodyResolve { private final DynamicTypesSettings dynamicTypesSettings; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; @@ -121,6 +123,7 @@ public class InjectorForBodyResolve { this.dynamicTypesSettings = new DynamicTypesSettings(); this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(moduleDescriptor); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); @@ -181,6 +184,7 @@ public class InjectorForBodyResolve { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyBodyResolve.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyBodyResolve.java index 59f3acdda2f..c55ff19e3ed 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyBodyResolve.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyBodyResolve.java @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.DescriptorResolver; @@ -90,6 +91,7 @@ public class InjectorForLazyBodyResolve { private final ControlStructureTypingUtils controlStructureTypingUtils; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; @@ -146,6 +148,7 @@ public class InjectorForLazyBodyResolve { this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(moduleDescriptor); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); @@ -227,6 +230,7 @@ public class InjectorForLazyBodyResolve { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyResolve.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyResolve.java index 0a9b862e4dc..d68fecfb3b5 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyResolve.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyResolve.java @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.DescriptorResolver; @@ -78,6 +79,7 @@ public class InjectorForLazyResolve { private final ControlStructureTypingUtils controlStructureTypingUtils; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; @@ -123,6 +125,7 @@ public class InjectorForLazyResolve { this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(moduleDescriptor); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); @@ -180,6 +183,7 @@ public class InjectorForLazyResolve { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyTopDownAnalyzerBasic.java index 5ee62d3d4e7..f3746c4fd50 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyTopDownAnalyzerBasic.java @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.DynamicTypesSettings; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.DescriptorResolver; @@ -93,6 +94,7 @@ public class InjectorForLazyTopDownAnalyzerBasic { private final DynamicTypesSettings dynamicTypesSettings; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; @@ -151,6 +153,7 @@ public class InjectorForLazyTopDownAnalyzerBasic { this.dynamicTypesSettings = new DynamicTypesSettings(); this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(module); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); @@ -233,6 +236,7 @@ public class InjectorForLazyTopDownAnalyzerBasic { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForMacros.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForMacros.java index f7d2e2cfd6a..5e95e911237 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForMacros.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForMacros.java @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.resolve.PartialBodyResolveProvider; import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; import org.jetbrains.kotlin.resolve.calls.CallCompleter; @@ -74,6 +75,7 @@ public class InjectorForMacros { private final ControlStructureTypingUtils controlStructureTypingUtils; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final ArgumentTypeResolver argumentTypeResolver; private final CallCompleter callCompleter; @@ -107,6 +109,7 @@ public class InjectorForMacros { this.controlStructureTypingUtils = new ControlStructureTypingUtils(getExpressionTypingServices()); this.expressionTypingUtils = new ExpressionTypingUtils(getExpressionTypingServices(), getCallResolver(), kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(moduleDescriptor); this.argumentTypeResolver = new ArgumentTypeResolver(); this.candidateResolver = new CandidateResolver(); @@ -131,6 +134,7 @@ public class InjectorForMacros { this.expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); this.expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); this.expressionTypingComponents.setGlobalContext(globalContext); + this.expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); this.expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); this.expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerBasic.java index 688680c17c5..3f8d9d5c4aa 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerBasic.java @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.DescriptorResolver; @@ -88,6 +89,7 @@ public class InjectorForTopDownAnalyzerBasic { private final ControlStructureTypingUtils controlStructureTypingUtils; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; @@ -142,6 +144,7 @@ public class InjectorForTopDownAnalyzerBasic { this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(getModuleDescriptor()); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); @@ -220,6 +223,7 @@ public class InjectorForTopDownAnalyzerBasic { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ClosureExpressionsTypingVisitor.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ClosureExpressionsTypingVisitor.java index 676175d39de..4aaf76e951b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ClosureExpressionsTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ClosureExpressionsTypingVisitor.java @@ -86,7 +86,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { }; ObservableBindingTrace traceAdapter = new ObservableBindingTrace(temporaryTrace); traceAdapter.addHandler(CLASS, handler); - LocalClassifierAnalyzer.processClassOrObject(components.globalContext, + components.localClassifierAnalyzer.processClassOrObject(components.globalContext, null, // don't need to add classifier of object literal to any scope context.replaceBindingTrace(traceAdapter).replaceContextDependency(INDEPENDENT), context.scope.getContainingDeclaration(), diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java index c1c96ccf609..482c356ad08 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingComponents.java @@ -39,6 +39,7 @@ public class ExpressionTypingComponents { /*package*/ AdditionalCheckerProvider additionalCheckerProvider; /*package*/ DynamicTypesSettings dynamicTypesSettings; /*package*/ KotlinBuiltIns builtIns; + /*package*/ LocalClassifierAnalyzer localClassifierAnalyzer; @Inject public void setGlobalContext(@NotNull GlobalContext globalContext) { @@ -95,6 +96,11 @@ public class ExpressionTypingComponents { this.builtIns = builtIns; } + @Inject + public void setLocalClassifierAnalyzer(@NotNull LocalClassifierAnalyzer localClassifierAnalyzer) { + this.localClassifierAnalyzer = localClassifierAnalyzer; + } + @NotNull public ForLoopConventionsChecker getForLoopConventionsChecker() { return forLoopConventionsChecker; diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingVisitorForStatements.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingVisitorForStatements.java index bd357c41b45..7210dc19bb4 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingVisitorForStatements.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/ExpressionTypingVisitorForStatements.java @@ -91,7 +91,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito @Override public JetTypeInfo visitObjectDeclaration(@NotNull JetObjectDeclaration declaration, ExpressionTypingContext context) { - LocalClassifierAnalyzer.processClassOrObject( + components.localClassifierAnalyzer.processClassOrObject( components.globalContext, scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), declaration, components.additionalCheckerProvider, @@ -189,7 +189,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito @Override public JetTypeInfo visitClass(@NotNull JetClass klass, ExpressionTypingContext context) { - LocalClassifierAnalyzer.processClassOrObject( + components.localClassifierAnalyzer.processClassOrObject( components.globalContext, scope, context.replaceScope(scope).replaceContextDependency(INDEPENDENT), scope.getContainingDeclaration(), klass, components.additionalCheckerProvider, diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/LocalClassifierAnalyzer.java b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/LocalClassifierAnalyzer.java index 92b9015788b..5ef946f5b81 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/LocalClassifierAnalyzer.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/LocalClassifierAnalyzer.java @@ -38,7 +38,7 @@ import org.jetbrains.kotlin.types.DynamicTypesSettings; import java.util.Collections; /* package */ class LocalClassifierAnalyzer { - public static void processClassOrObject( + public void processClassOrObject( @NotNull GlobalContext globalContext, @Nullable final WritableScope scope, @NotNull ExpressionTypingContext context, diff --git a/compiler/tests/org/jetbrains/kotlin/di/InjectorForTests.java b/compiler/tests/org/jetbrains/kotlin/di/InjectorForTests.java index bef9064efb9..36c2b87dceb 100644 --- a/compiler/tests/org/jetbrains/kotlin/di/InjectorForTests.java +++ b/compiler/tests/org/jetbrains/kotlin/di/InjectorForTests.java @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.DynamicTypesSettings; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.PartialBodyResolveProvider; @@ -73,6 +74,7 @@ public class InjectorForTests { private final ControlStructureTypingUtils controlStructureTypingUtils; private final DynamicTypesSettings dynamicTypesSettings; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final PartialBodyResolveProvider partialBodyResolveProvider; @@ -109,6 +111,7 @@ public class InjectorForTests { this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.controlStructureTypingUtils = new ControlStructureTypingUtils(getExpressionTypingServices()); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(moduleDescriptor); this.callExpressionResolver = new CallExpressionResolver(); this.partialBodyResolveProvider = new PartialBodyResolveProvider(); @@ -159,6 +162,7 @@ public class InjectorForTests { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes); diff --git a/js/js.frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJs.java b/js/js.frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJs.java index edc8dc61ac6..e6a05c91009 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJs.java @@ -37,6 +37,7 @@ import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; import org.jetbrains.kotlin.types.expressions.ExpressionTypingUtils; import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; +import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; import org.jetbrains.kotlin.types.reflect.ReflectionTypes; import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; import org.jetbrains.kotlin.resolve.DescriptorResolver; @@ -94,6 +95,7 @@ public class InjectorForTopDownAnalyzerForJs { private final ControlStructureTypingUtils controlStructureTypingUtils; private final ExpressionTypingUtils expressionTypingUtils; private final ForLoopConventionsChecker forLoopConventionsChecker; + private final LocalClassifierAnalyzer localClassifierAnalyzer; private final ReflectionTypes reflectionTypes; private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; @@ -152,6 +154,7 @@ public class InjectorForTopDownAnalyzerForJs { this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices); this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver, kotlinBuiltIns); this.forLoopConventionsChecker = new ForLoopConventionsChecker(); + this.localClassifierAnalyzer = new LocalClassifierAnalyzer(); this.reflectionTypes = new ReflectionTypes(module); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); @@ -233,6 +236,7 @@ public class InjectorForTopDownAnalyzerForJs { expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils); expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); expressionTypingComponents.setGlobalContext(globalContext); + expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); expressionTypingComponents.setReflectionTypes(reflectionTypes);