move trivial method from TopDownAnalyzer to BodyResolver

This commit is contained in:
Stepan Koltsov
2012-06-12 18:50:41 +04:00
parent 768469fb23
commit a55c8f1a04
7 changed files with 33 additions and 42 deletions
@@ -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);
@@ -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();
@@ -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);
@@ -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<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
@@ -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();
@@ -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);
@@ -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 {