JavaDescriptorResolver is not needed for body resolver

* create InjectorForBodyResolve
* split ScriptDescriptor into ScriptDeclarationResolve and ScriptBodyResolver
This commit is contained in:
Stepan Koltsov
2012-06-13 19:27:04 +04:00
parent b571871a27
commit 9290f55bad
13 changed files with 346 additions and 103 deletions
@@ -41,11 +41,12 @@ import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.OverloadingConflictResolver;
import org.jetbrains.jet.lang.resolve.ImportsResolver;
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
import org.jetbrains.jet.lang.resolve.DelegationResolver;
import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.resolve.ScriptResolver;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.java.JavaSemanticServices;
import org.jetbrains.jet.lang.resolve.java.JavaTypeTransformer;
import com.intellij.openapi.project.Project;
@@ -83,11 +84,12 @@ public class InjectorForTopDownAnalyzerForJvm {
private QualifiedExpressionResolver qualifiedExpressionResolver;
private OverloadingConflictResolver overloadingConflictResolver;
private ImportsResolver importsResolver;
private ScriptHeaderResolver scriptHeaderResolver;
private DelegationResolver delegationResolver;
private OverloadResolver overloadResolver;
private OverrideResolver overrideResolver;
private TypeHierarchyResolver typeHierarchyResolver;
private ScriptResolver scriptResolver;
private ScriptBodyResolver scriptBodyResolver;
private JavaSemanticServices javaSemanticServices;
private JavaTypeTransformer javaTypeTransformer;
@@ -122,11 +124,12 @@ public class InjectorForTopDownAnalyzerForJvm {
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.overloadingConflictResolver = new OverloadingConflictResolver();
this.importsResolver = new ImportsResolver();
this.scriptHeaderResolver = new ScriptHeaderResolver();
this.delegationResolver = new DelegationResolver();
this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver();
this.scriptResolver = new ScriptResolver();
this.scriptBodyResolver = new ScriptBodyResolver();
this.javaSemanticServices = new JavaSemanticServices();
this.javaTypeTransformer = new JavaTypeTransformer();
@@ -149,7 +152,7 @@ public class InjectorForTopDownAnalyzerForJvm {
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDescriptorResolver(descriptorResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setScriptResolver(scriptResolver);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setTrace(bindingTrace);
@@ -183,6 +186,7 @@ public class InjectorForTopDownAnalyzerForJvm {
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
annotationResolver.setCallResolver(callResolver);
@@ -207,6 +211,12 @@ public class InjectorForTopDownAnalyzerForJvm {
importsResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
importsResolver.setTrace(bindingTrace);
scriptHeaderResolver.setContext(topDownAnalysisContext);
scriptHeaderResolver.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver);
scriptHeaderResolver.setNamespaceFactory(namespaceFactory);
scriptHeaderResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
scriptHeaderResolver.setTrace(bindingTrace);
delegationResolver.setContext(topDownAnalysisContext);
delegationResolver.setTrace(bindingTrace);
@@ -221,16 +231,12 @@ public class InjectorForTopDownAnalyzerForJvm {
typeHierarchyResolver.setDescriptorResolver(descriptorResolver);
typeHierarchyResolver.setImportsResolver(importsResolver);
typeHierarchyResolver.setNamespaceFactory(namespaceFactory);
typeHierarchyResolver.setScriptResolver(scriptResolver);
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
typeHierarchyResolver.setTrace(bindingTrace);
scriptResolver.setContext(topDownAnalysisContext);
scriptResolver.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver);
scriptResolver.setExpressionTypingServices(expressionTypingServices);
scriptResolver.setModuleDescriptor(moduleDescriptor);
scriptResolver.setNamespaceFactory(namespaceFactory);
scriptResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
scriptResolver.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
javaSemanticServices.setDescriptorResolver(javaDescriptorResolver);
javaSemanticServices.setPsiClassFinder(psiClassFinderForJvm);
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.analyzer.AnalyzerFacade;
import org.jetbrains.jet.di.InjectorForBodyResolve;
import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
@@ -71,7 +72,6 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
) {
return analyzeBodiesInFilesWithJavaIntegration(
project, scriptParameters, filesForBodiesResolve,
compilerDependenciesForProduction(CompilerSpecialMode.REGULAR),
headersTraceContext, bodiesResolveContext);
}
@@ -137,19 +137,17 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade {
public static AnalyzeExhaust analyzeBodiesInFilesWithJavaIntegration(
Project project, List<AnalyzerScriptParameter> scriptParameters, Predicate<PsiFile> filesToAnalyzeCompletely,
@NotNull CompilerDependencies compilerDependencies,
@NotNull BindingTrace traceContext,
@NotNull BodiesResolveContext bodiesResolveContext) {
final ModuleDescriptor owner = new ModuleDescriptor(Name.special("<module>"));
TopDownAnalysisParameters topDownAnalysisParameters = new TopDownAnalysisParameters(
filesToAnalyzeCompletely, false, false, scriptParameters);
bodiesResolveContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(
InjectorForBodyResolve injector = new InjectorForBodyResolve(
project, topDownAnalysisParameters,
new ObservableBindingTrace(traceContext), owner, compilerDependencies);
new ObservableBindingTrace(traceContext));
try {
injector.getBodyResolver().resolveBodies(bodiesResolveContext);