diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 78dc4bc010e..ee27d69b7fb 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -132,11 +132,8 @@ public class InjectorForTopDownAnalyzerForJvm { this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setContext(topDownAnalysisContext); - this.topDownAnalyzer.setControlFlowAnalyzer(controlFlowAnalyzer); this.topDownAnalyzer.setDeclarationResolver(declarationResolver); - this.topDownAnalyzer.setDeclarationsChecker(declarationsChecker); this.topDownAnalyzer.setDelegationResolver(delegationResolver); - this.topDownAnalyzer.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver); this.topDownAnalyzer.setModuleDescriptor(moduleDescriptor); this.topDownAnalyzer.setNamespaceFactory(namespaceFactory); this.topDownAnalyzer.setOverloadResolver(overloadResolver); @@ -148,6 +145,8 @@ public class InjectorForTopDownAnalyzerForJvm { this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters); this.bodyResolver.setCallResolver(callResolver); + this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); + this.bodyResolver.setDeclarationsChecker(declarationsChecker); this.bodyResolver.setDescriptorResolver(descriptorResolver); this.bodyResolver.setExpressionTypingServices(expressionTypingServices); this.bodyResolver.setScriptResolver(scriptResolver); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java index 4ccc5b9f563..af36c76acb5 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java @@ -152,7 +152,7 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade { new ObservableBindingTrace(traceContext), owner, compilerDependencies); try { - injector.getTopDownAnalyzer().doProcessForBodies(bodiesResolveContext); + injector.getBodyResolver().resolveBodies(bodiesResolveContext); return AnalyzeExhaust.success(traceContext.getBindingContext(), JetStandardLibrary.getInstance()); } finally { injector.destroy(); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java index 6210243c3be..1dfbf666b6a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java @@ -117,11 +117,8 @@ public class InjectorForTopDownAnalyzerBasic { this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setContext(topDownAnalysisContext); - this.topDownAnalyzer.setControlFlowAnalyzer(controlFlowAnalyzer); this.topDownAnalyzer.setDeclarationResolver(declarationResolver); - this.topDownAnalyzer.setDeclarationsChecker(declarationsChecker); this.topDownAnalyzer.setDelegationResolver(delegationResolver); - this.topDownAnalyzer.setDependencyClassByQualifiedNameResolver(dependencyClassByQualifiedNameResolverDummy); this.topDownAnalyzer.setModuleDescriptor(moduleDescriptor); this.topDownAnalyzer.setNamespaceFactory(namespaceFactory); this.topDownAnalyzer.setOverloadResolver(overloadResolver); @@ -133,6 +130,8 @@ public class InjectorForTopDownAnalyzerBasic { this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters); this.bodyResolver.setCallResolver(callResolver); + this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); + this.bodyResolver.setDeclarationsChecker(declarationsChecker); this.bodyResolver.setDescriptorResolver(descriptorResolver); this.bodyResolver.setExpressionTypingServices(expressionTypingServices); this.bodyResolver.setScriptResolver(scriptResolver); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java index 728aad9e61e..f91b4cb614d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java @@ -122,6 +122,10 @@ public class BodyResolver { private CallResolver callResolver; @NotNull private ObservableBindingTrace trace; + @NotNull + private ControlFlowAnalyzer controlFlowAnalyzer; + @NotNull + private DeclarationsChecker declarationsChecker; @Inject public void setTopDownAnalysisParameters(@NotNull TopDownAnalysisParameters topDownAnalysisParameters) { @@ -153,7 +157,18 @@ public class BodyResolver { this.trace = new ObservableBindingTrace(trace); } - public void resolveBehaviorDeclarationBodies(@NotNull BodiesResolveContext bodiesResolveContext) { + @Inject + public void setControlFlowAnalyzer(@NotNull ControlFlowAnalyzer controlFlowAnalyzer) { + this.controlFlowAnalyzer = controlFlowAnalyzer; + } + + @Inject + public void setDeclarationsChecker(@NotNull DeclarationsChecker declarationsChecker) { + this.declarationsChecker = declarationsChecker; + } + + + private void resolveBehaviorDeclarationBodies(@NotNull BodiesResolveContext bodiesResolveContext) { // Initialize context context = bodiesResolveContext; @@ -174,6 +189,13 @@ public class BodyResolver { } } + public void resolveBodies(@NotNull BodiesResolveContext bodiesResolveContext) { + resolveBehaviorDeclarationBodies(bodiesResolveContext); + controlFlowAnalyzer.process(bodiesResolveContext); + declarationsChecker.process(bodiesResolveContext); + + } + private void resolveDelegationSpecifierLists() { // TODO : Make sure the same thing is not initialized twice for (Map.Entry entry : context.getClasses().entrySet()) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index f5918f0731c..69ef8569ede 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -24,7 +24,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.di.InjectorForTopDownAnalyzerBasic; import org.jetbrains.jet.lang.ModuleConfiguration; import org.jetbrains.jet.lang.descriptors.*; -import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.psi.JetDeclaration; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetObjectDeclaration; @@ -34,10 +33,7 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl; import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolver; -import org.jetbrains.jet.lang.types.JetType; -import org.jetbrains.jet.lang.types.TypeUtils; import org.jetbrains.jet.lang.types.lang.JetStandardClasses; -import org.jetbrains.jet.lang.types.ref.JetTypeName; import javax.inject.Inject; import java.util.ArrayList; @@ -71,11 +67,7 @@ public class TopDownAnalyzer { @NotNull private NamespaceFactoryImpl namespaceFactory; @NotNull - private DependencyClassByQualifiedNameResolver dependencyClassByQualifiedNameResolver; - private BodyResolver bodyResolver; - private ControlFlowAnalyzer controlFlowAnalyzer; - private DeclarationsChecker declarationsChecker; @Inject public void setDeclarationResolver(@NotNull DeclarationResolver declarationResolver) { @@ -128,24 +120,10 @@ public class TopDownAnalyzer { } @Inject - public void setBodyResolver(BodyResolver bodyResolver) { + public void setBodyResolver(@NotNull BodyResolver bodyResolver) { this.bodyResolver = bodyResolver; } - @Inject - public void setControlFlowAnalyzer(ControlFlowAnalyzer controlFlowAnalyzer) { - this.controlFlowAnalyzer = controlFlowAnalyzer; - } - - @Inject - public void setDeclarationsChecker(DeclarationsChecker declarationsChecker) { - this.declarationsChecker = declarationsChecker; - } - - @Inject - public void setDependencyClassByQualifiedNameResolver(@NotNull DependencyClassByQualifiedNameResolver dependencyClassByQualifiedNameResolver) { - this.dependencyClassByQualifiedNameResolver = dependencyClassByQualifiedNameResolver; - } public void doProcess( @@ -165,19 +143,13 @@ public class TopDownAnalyzer { overloadResolver.process(); if (!topDownAnalysisParameters.isAnalyzingBootstrapLibrary()) { - doProcessForBodies(context); + bodyResolver.resolveBodies(context); } context.debug("Exit"); context.printDebugOutput(System.out); } - public void doProcessForBodies(BodiesResolveContext bodiesResolveContext) { - bodyResolver.resolveBehaviorDeclarationBodies(bodiesResolveContext); - controlFlowAnalyzer.process(bodiesResolveContext); - declarationsChecker.process(bodiesResolveContext); - } - private void lockScopes() { for (MutableClassDescriptor mutableClassDescriptor : context.getClasses().values()) { mutableClassDescriptor.lockScopes(); diff --git a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java index 1c75b4cbf07..bf975c7fb7a 100644 --- a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java @@ -117,11 +117,8 @@ public class InjectorForTopDownAnalyzerForJs { this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setContext(topDownAnalysisContext); - this.topDownAnalyzer.setControlFlowAnalyzer(controlFlowAnalyzer); this.topDownAnalyzer.setDeclarationResolver(declarationResolver); - this.topDownAnalyzer.setDeclarationsChecker(declarationsChecker); this.topDownAnalyzer.setDelegationResolver(delegationResolver); - this.topDownAnalyzer.setDependencyClassByQualifiedNameResolver(dependencyClassByQualifiedNameResolverDummy); this.topDownAnalyzer.setModuleDescriptor(moduleDescriptor); this.topDownAnalyzer.setNamespaceFactory(namespaceFactory); this.topDownAnalyzer.setOverloadResolver(overloadResolver); @@ -133,6 +130,8 @@ public class InjectorForTopDownAnalyzerForJs { this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters); this.bodyResolver.setCallResolver(callResolver); + this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); + this.bodyResolver.setDeclarationsChecker(declarationsChecker); this.bodyResolver.setDescriptorResolver(descriptorResolver); this.bodyResolver.setExpressionTypingServices(expressionTypingServices); this.bodyResolver.setScriptResolver(scriptResolver); diff --git a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java index 2d87bd9c7fa..22a29692c54 100644 --- a/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java +++ b/js/js.translator/src/org/jetbrains/k2js/analyze/AnalyzerFacadeForJS.java @@ -124,7 +124,7 @@ public final class AnalyzerFacadeForJS { try { bodiesResolveContext.setTopDownAnalysisParameters(topDownAnalysisParameters); - injector.getTopDownAnalyzer().doProcessForBodies(bodiesResolveContext); + injector.getBodyResolver().resolveBodies(bodiesResolveContext); return AnalyzeExhaust.success(traceContext.getBindingContext(), JetStandardLibrary.getInstance()); } finally {