Inject context for body resolve
This commit is contained in:
@@ -144,6 +144,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||||
|
|
||||||
this.bodyResolver.setCallResolver(callResolver);
|
this.bodyResolver.setCallResolver(callResolver);
|
||||||
|
this.bodyResolver.setContext(topDownAnalysisContext);
|
||||||
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
|
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
|
||||||
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
|
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
|
||||||
this.bodyResolver.setDescriptorResolver(descriptorResolver);
|
this.bodyResolver.setDescriptorResolver(descriptorResolver);
|
||||||
|
|||||||
@@ -49,10 +49,11 @@ public class AnalyzerFacadeForEverything {
|
|||||||
|
|
||||||
InjectorForBodyResolve injector = new InjectorForBodyResolve(
|
InjectorForBodyResolve injector = new InjectorForBodyResolve(
|
||||||
project, topDownAnalysisParameters,
|
project, topDownAnalysisParameters,
|
||||||
new ObservableBindingTrace(traceContext));
|
new ObservableBindingTrace(traceContext),
|
||||||
|
bodiesResolveContext);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
injector.getBodyResolver().resolveBodies(bodiesResolveContext);
|
injector.getBodyResolver().resolveBodies();
|
||||||
return AnalyzeExhaust.success(traceContext.getBindingContext());
|
return AnalyzeExhaust.success(traceContext.getBindingContext());
|
||||||
} finally {
|
} finally {
|
||||||
injector.destroy();
|
injector.destroy();
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import org.jetbrains.jet.lang.resolve.BodyResolver;
|
|||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
import org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
import org.jetbrains.jet.lang.resolve.BindingTrace;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BodiesResolveContext;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||||
@@ -42,6 +43,7 @@ public class InjectorForBodyResolve {
|
|||||||
private final Project project;
|
private final Project project;
|
||||||
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
private final TopDownAnalysisParameters topDownAnalysisParameters;
|
||||||
private final BindingTrace bindingTrace;
|
private final BindingTrace bindingTrace;
|
||||||
|
private final BodiesResolveContext bodiesResolveContext;
|
||||||
private CallResolver callResolver;
|
private CallResolver callResolver;
|
||||||
private DescriptorResolver descriptorResolver;
|
private DescriptorResolver descriptorResolver;
|
||||||
private AnnotationResolver annotationResolver;
|
private AnnotationResolver annotationResolver;
|
||||||
@@ -57,12 +59,14 @@ public class InjectorForBodyResolve {
|
|||||||
public InjectorForBodyResolve(
|
public InjectorForBodyResolve(
|
||||||
@NotNull Project project,
|
@NotNull Project project,
|
||||||
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
||||||
@NotNull BindingTrace bindingTrace
|
@NotNull BindingTrace bindingTrace,
|
||||||
|
@NotNull BodiesResolveContext bodiesResolveContext
|
||||||
) {
|
) {
|
||||||
this.bodyResolver = new BodyResolver();
|
this.bodyResolver = new BodyResolver();
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
this.topDownAnalysisParameters = topDownAnalysisParameters;
|
||||||
this.bindingTrace = bindingTrace;
|
this.bindingTrace = bindingTrace;
|
||||||
|
this.bodiesResolveContext = bodiesResolveContext;
|
||||||
this.callResolver = new CallResolver();
|
this.callResolver = new CallResolver();
|
||||||
this.descriptorResolver = new DescriptorResolver();
|
this.descriptorResolver = new DescriptorResolver();
|
||||||
this.annotationResolver = new AnnotationResolver();
|
this.annotationResolver = new AnnotationResolver();
|
||||||
@@ -76,6 +80,7 @@ public class InjectorForBodyResolve {
|
|||||||
this.topDownAnalysisContext = new TopDownAnalysisContext();
|
this.topDownAnalysisContext = new TopDownAnalysisContext();
|
||||||
|
|
||||||
this.bodyResolver.setCallResolver(callResolver);
|
this.bodyResolver.setCallResolver(callResolver);
|
||||||
|
this.bodyResolver.setContext(bodiesResolveContext);
|
||||||
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
|
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
|
||||||
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
|
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
|
||||||
this.bodyResolver.setDescriptorResolver(descriptorResolver);
|
this.bodyResolver.setDescriptorResolver(descriptorResolver);
|
||||||
@@ -138,4 +143,8 @@ public class InjectorForBodyResolve {
|
|||||||
return this.bindingTrace;
|
return this.bindingTrace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BodiesResolveContext getBodiesResolveContext() {
|
||||||
|
return this.bodiesResolveContext;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,6 +128,7 @@ public class InjectorForTopDownAnalyzerBasic {
|
|||||||
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||||
|
|
||||||
this.bodyResolver.setCallResolver(callResolver);
|
this.bodyResolver.setCallResolver(callResolver);
|
||||||
|
this.bodyResolver.setContext(topDownAnalysisContext);
|
||||||
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
|
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
|
||||||
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
|
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
|
||||||
this.bodyResolver.setDescriptorResolver(descriptorResolver);
|
this.bodyResolver.setDescriptorResolver(descriptorResolver);
|
||||||
|
|||||||
@@ -110,6 +110,10 @@ public class BodyResolver {
|
|||||||
this.declarationsChecker = declarationsChecker;
|
this.declarationsChecker = declarationsChecker;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public void setContext(@NotNull BodiesResolveContext context) {
|
||||||
|
this.context = context;
|
||||||
|
}
|
||||||
|
|
||||||
private void resolveBehaviorDeclarationBodies(@NotNull BodiesResolveContext bodiesResolveContext) {
|
private void resolveBehaviorDeclarationBodies(@NotNull BodiesResolveContext bodiesResolveContext) {
|
||||||
// Initialize context
|
// Initialize context
|
||||||
@@ -132,10 +136,14 @@ public class BodyResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void resolveBodies(@NotNull BodiesResolveContext bodiesResolveContext) {
|
public void resolveBodies(@NotNull BodiesResolveContext bodiesResolveContext) {
|
||||||
resolveBehaviorDeclarationBodies(bodiesResolveContext);
|
context = bodiesResolveContext;
|
||||||
controlFlowAnalyzer.process(bodiesResolveContext);
|
resolveBodies();
|
||||||
declarationsChecker.process(bodiesResolveContext);
|
}
|
||||||
|
|
||||||
|
public void resolveBodies() {
|
||||||
|
resolveBehaviorDeclarationBodies(context);
|
||||||
|
controlFlowAnalyzer.process(context);
|
||||||
|
declarationsChecker.process(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resolveDelegationSpecifierLists() {
|
private void resolveDelegationSpecifierLists() {
|
||||||
@@ -482,7 +490,7 @@ public class BodyResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resolveFunctionBody(
|
public void resolveFunctionBody(
|
||||||
@NotNull BindingTrace trace,
|
@NotNull BindingTrace trace,
|
||||||
@NotNull JetDeclarationWithBody function,
|
@NotNull JetDeclarationWithBody function,
|
||||||
@NotNull FunctionDescriptor functionDescriptor,
|
@NotNull FunctionDescriptor functionDescriptor,
|
||||||
|
|||||||
@@ -222,6 +222,7 @@ public class AllInjectorsGenerator {
|
|||||||
generator.addPublicParameter(Project.class);
|
generator.addPublicParameter(Project.class);
|
||||||
generator.addPublicParameter(TopDownAnalysisParameters.class);
|
generator.addPublicParameter(TopDownAnalysisParameters.class);
|
||||||
generator.addPublicParameter(BindingTrace.class);
|
generator.addPublicParameter(BindingTrace.class);
|
||||||
|
generator.addPublicParameter(BodiesResolveContext.class);
|
||||||
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve");
|
generator.generate("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -128,6 +128,7 @@ public class InjectorForTopDownAnalyzerForJs {
|
|||||||
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
|
||||||
|
|
||||||
this.bodyResolver.setCallResolver(callResolver);
|
this.bodyResolver.setCallResolver(callResolver);
|
||||||
|
this.bodyResolver.setContext(topDownAnalysisContext);
|
||||||
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
|
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
|
||||||
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
|
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
|
||||||
this.bodyResolver.setDescriptorResolver(descriptorResolver);
|
this.bodyResolver.setDescriptorResolver(descriptorResolver);
|
||||||
|
|||||||
Reference in New Issue
Block a user