Generate Injectors: simplify and remove redundancy

This commit is contained in:
Pavel V. Talanov
2014-02-13 16:01:12 +04:00
parent 00cbd11b84
commit 6c77ea91c5
13 changed files with 372 additions and 487 deletions
@@ -19,16 +19,16 @@ package org.jetbrains.jet.di;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.context.GlobalContextImpl; import org.jetbrains.jet.context.GlobalContextImpl;
import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl; import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver; import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache; import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter; import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker; import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver; import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver; import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
@@ -43,16 +43,16 @@ public class InjectorForJavaDescriptorResolver {
private final Project project; private final Project project;
private final BindingTrace bindingTrace; private final BindingTrace bindingTrace;
private final GlobalContextImpl globalContext; private final GlobalContextImpl globalContext;
private final StorageManager storageManager; private final ModuleDescriptorImpl module;
private final JavaDescriptorResolver javaDescriptorResolver;
private final JavaClassFinderImpl javaClassFinder; private final JavaClassFinderImpl javaClassFinder;
private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver; private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
private final TraceBasedJavaResolverCache traceBasedJavaResolverCache; private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
private final TraceBasedErrorReporter traceBasedErrorReporter; private final TraceBasedErrorReporter traceBasedErrorReporter;
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker; private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver; private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
private final JavaDescriptorResolver javaDescriptorResolver; private final StorageManager storageManager;
private final VirtualFileFinder virtualFileFinder; private final VirtualFileFinder virtualFileFinder;
private final ModuleDescriptorImpl module;
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
private final GlobalJavaResolverContext globalJavaResolverContext; private final GlobalJavaResolverContext globalJavaResolverContext;
private final DeserializedDescriptorResolver deserializedDescriptorResolver; private final DeserializedDescriptorResolver deserializedDescriptorResolver;
@@ -65,17 +65,17 @@ public class InjectorForJavaDescriptorResolver {
this.project = project; this.project = project;
this.bindingTrace = bindingTrace; this.bindingTrace = bindingTrace;
this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext(); this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext();
this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
this.storageManager = globalContext.getStorageManager(); this.storageManager = globalContext.getStorageManager();
this.javaClassFinder = new JavaClassFinderImpl(); this.javaClassFinder = new JavaClassFinderImpl();
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project); this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(); this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
this.traceBasedErrorReporter = new TraceBasedErrorReporter();
this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache); this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache);
this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule()); this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule()); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(storageManager); this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(storageManager);
@@ -114,16 +114,16 @@ public class InjectorForJavaDescriptorResolver {
return this.globalContext; return this.globalContext;
} }
public JavaClassFinderImpl getJavaClassFinder() { public ModuleDescriptorImpl getModule() {
return this.javaClassFinder; return this.module;
} }
public JavaDescriptorResolver getJavaDescriptorResolver() { public JavaDescriptorResolver getJavaDescriptorResolver() {
return this.javaDescriptorResolver; return this.javaDescriptorResolver;
} }
public ModuleDescriptorImpl getModule() { public JavaClassFinderImpl getJavaClassFinder() {
return this.module; return this.javaClassFinder;
} }
} }
@@ -16,18 +16,14 @@
package org.jetbrains.jet.di; package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
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.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap; import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl; import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
@@ -36,26 +32,30 @@ import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter; import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker; import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver; import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
import org.jetbrains.jet.lang.resolve.DeclarationResolver; import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver; import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver; import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.ImportsResolver; import org.jetbrains.jet.lang.resolve.ImportsResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory; import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver; import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
import org.jetbrains.jet.lang.resolve.OverloadResolver; import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver; import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
@@ -67,18 +67,14 @@ import javax.annotation.PreDestroy;
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer { public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnalyzer {
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final BodyResolver bodyResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final DescriptorResolver descriptorResolver;
private final StorageManager storageManager;
private final CallResolverExtensionProvider callResolverExtensionProvider;
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 ModuleDescriptorImpl moduleDescriptor; private final ModuleDescriptorImpl moduleDescriptor;
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final StorageManager storageManager;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final JavaDescriptorResolver javaDescriptorResolver; private final JavaDescriptorResolver javaDescriptorResolver;
private final JavaToKotlinClassMap javaToKotlinClassMap; private final JavaToKotlinClassMap javaToKotlinClassMap;
private final JavaClassFinderImpl javaClassFinder; private final JavaClassFinderImpl javaClassFinder;
@@ -87,26 +83,30 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
private final TraceBasedErrorReporter traceBasedErrorReporter; private final TraceBasedErrorReporter traceBasedErrorReporter;
private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker; private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver; private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final VirtualFileFinder virtualFileFinder; private final VirtualFileFinder virtualFileFinder;
private final DeclarationResolver declarationResolver; private final BodyResolver bodyResolver;
private final AnnotationResolver annotationResolver; private final AnnotationResolver annotationResolver;
private final CallResolver callResolver; private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver; private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver; private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver; private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final CandidateResolver candidateResolver; private final CandidateResolver candidateResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
private final DeclarationResolver declarationResolver;
private final ImportsResolver importsResolver; private final ImportsResolver importsResolver;
private final JetImportsFactory jetImportsFactory; private final JetImportsFactory jetImportsFactory;
private final ScriptHeaderResolver scriptHeaderResolver; private final ScriptHeaderResolver scriptHeaderResolver;
private final OverloadResolver overloadResolver; private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver; private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver; private final TypeHierarchyResolver typeHierarchyResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
private final GlobalJavaResolverContext globalJavaResolverContext; private final GlobalJavaResolverContext globalJavaResolverContext;
private final DeserializedDescriptorResolver deserializedDescriptorResolver; private final DeserializedDescriptorResolver deserializedDescriptorResolver;
@@ -118,18 +118,14 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
@NotNull BindingTrace bindingTrace, @NotNull BindingTrace bindingTrace,
@NotNull ModuleDescriptorImpl moduleDescriptor @NotNull ModuleDescriptorImpl moduleDescriptor
) { ) {
this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.bodyResolver = new BodyResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.descriptorResolver = new DescriptorResolver();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.project = project; this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters; this.topDownAnalysisParameters = topDownAnalysisParameters;
this.bindingTrace = bindingTrace; this.bindingTrace = bindingTrace;
this.moduleDescriptor = moduleDescriptor; this.moduleDescriptor = moduleDescriptor;
this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.javaClassFinder = new JavaClassFinderImpl(); this.javaClassFinder = new JavaClassFinderImpl();
this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project); this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(); this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
@@ -142,25 +138,29 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor()); this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor());
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModuleDescriptor()); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModuleDescriptor());
this.javaToKotlinClassMap = org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance(); this.javaToKotlinClassMap = org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor()); this.bodyResolver = new BodyResolver();
this.declarationResolver = new DeclarationResolver();
this.annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver(); this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver(); this.argumentTypeResolver = new ArgumentTypeResolver();
this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), javaToKotlinClassMap); this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), javaToKotlinClassMap);
this.callExpressionResolver = new CallExpressionResolver(); this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver(); this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.candidateResolver = new CandidateResolver(); this.candidateResolver = new CandidateResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.declarationResolver = new DeclarationResolver();
this.importsResolver = new ImportsResolver(); this.importsResolver = new ImportsResolver();
this.jetImportsFactory = new JetImportsFactory(); this.jetImportsFactory = new JetImportsFactory();
this.scriptHeaderResolver = new ScriptHeaderResolver(); this.scriptHeaderResolver = new ScriptHeaderResolver();
this.overloadResolver = new OverloadResolver(); this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver(); this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver(); this.typeHierarchyResolver = new TypeHierarchyResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(storageManager); this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(storageManager);
this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setBodyResolver(bodyResolver);
@@ -176,29 +176,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters); this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setAnnotationResolver(annotationResolver);
this.bodyResolver.setCallResolver(callResolver);
this.bodyResolver.setContext(topDownAnalysisContext);
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
this.bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setTrace(bindingTrace);
this.controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.controlFlowAnalyzer.setTrace(bindingTrace);
this.declarationsChecker.setTrace(bindingTrace);
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setStorageManager(storageManager);
this.descriptorResolver.setTypeResolver(typeResolver);
javaClassFinder.setProject(project); javaClassFinder.setProject(project);
traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
@@ -211,12 +188,17 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver); psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
declarationResolver.setAnnotationResolver(annotationResolver); bodyResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext); bodyResolver.setCallResolver(callResolver);
declarationResolver.setDescriptorResolver(descriptorResolver); bodyResolver.setContext(topDownAnalysisContext);
declarationResolver.setImportsResolver(importsResolver); bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver); bodyResolver.setDeclarationsChecker(declarationsChecker);
declarationResolver.setTrace(bindingTrace); bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
bodyResolver.setExpressionTypingServices(expressionTypingServices);
bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
bodyResolver.setTrace(bindingTrace);
annotationResolver.setCallResolver(callResolver); annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices); annotationResolver.setExpressionTypingServices(expressionTypingServices);
@@ -239,12 +221,38 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
callExpressionResolver.setExpressionTypingServices(expressionTypingServices); callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setAnnotationResolver(annotationResolver);
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setStorageManager(storageManager);
descriptorResolver.setTypeResolver(typeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
typeResolver.setAnnotationResolver(annotationResolver); typeResolver.setAnnotationResolver(annotationResolver);
typeResolver.setModuleDescriptor(moduleDescriptor); typeResolver.setModuleDescriptor(moduleDescriptor);
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
candidateResolver.setArgumentTypeResolver(argumentTypeResolver); candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
controlFlowAnalyzer.setTrace(bindingTrace);
declarationsChecker.setTrace(bindingTrace);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
importsResolver.setContext(topDownAnalysisContext); importsResolver.setContext(topDownAnalysisContext);
importsResolver.setImportsFactory(jetImportsFactory); importsResolver.setImportsFactory(jetImportsFactory);
importsResolver.setModuleDescriptor(moduleDescriptor); importsResolver.setModuleDescriptor(moduleDescriptor);
@@ -273,14 +281,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver); typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
typeHierarchyResolver.setTrace(bindingTrace); typeHierarchyResolver.setTrace(bindingTrace);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer); deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter); deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver); deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
@@ -299,6 +299,10 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
public void destroy() { public void destroy() {
} }
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
public TopDownAnalyzer getTopDownAnalyzer() { public TopDownAnalyzer getTopDownAnalyzer() {
return this.topDownAnalyzer; return this.topDownAnalyzer;
} }
@@ -307,34 +311,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
return this.topDownAnalysisContext; return this.topDownAnalysisContext;
} }
public BodyResolver getBodyResolver() {
return this.bodyResolver;
}
public ControlFlowAnalyzer getControlFlowAnalyzer() {
return this.controlFlowAnalyzer;
}
public DeclarationsChecker getDeclarationsChecker() {
return this.declarationsChecker;
}
public DescriptorResolver getDescriptorResolver() {
return this.descriptorResolver;
}
public Project getProject() {
return this.project;
}
public BindingTrace getBindingTrace() {
return this.bindingTrace;
}
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
public JavaDescriptorResolver getJavaDescriptorResolver() { public JavaDescriptorResolver getJavaDescriptorResolver() {
return this.javaDescriptorResolver; return this.javaDescriptorResolver;
} }
@@ -16,16 +16,14 @@
package org.jetbrains.jet.di; package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.storage.StorageManager;
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.BodiesResolveContext;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
@@ -35,9 +33,11 @@ import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver; import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer; import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker; import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext; import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -47,16 +47,14 @@ import javax.annotation.PreDestroy;
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForBodyResolve { public class InjectorForBodyResolve {
private final BodyResolver bodyResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final StorageManager storageManager;
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 final BodiesResolveContext bodiesResolveContext;
private final ModuleDescriptor moduleDescriptor; private final ModuleDescriptor moduleDescriptor;
private final BodyResolver bodyResolver;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final StorageManager storageManager;
private final AnnotationResolver annotationResolver; private final AnnotationResolver annotationResolver;
private final CallResolver callResolver; private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver; private final ArgumentTypeResolver argumentTypeResolver;
@@ -66,9 +64,11 @@ public class InjectorForBodyResolve {
private final DelegatedPropertyResolver delegatedPropertyResolver; private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver; private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final CandidateResolver candidateResolver; private final CandidateResolver candidateResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer; private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker; private final DeclarationsChecker declarationsChecker;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver; private final ScriptBodyResolver scriptBodyResolver;
private final TopDownAnalysisContext topDownAnalysisContext; private final TopDownAnalysisContext topDownAnalysisContext;
@@ -79,28 +79,28 @@ public class InjectorForBodyResolve {
@NotNull BodiesResolveContext bodiesResolveContext, @NotNull BodiesResolveContext bodiesResolveContext,
@NotNull ModuleDescriptor moduleDescriptor @NotNull ModuleDescriptor moduleDescriptor
) { ) {
this.bodyResolver = new BodyResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.project = project; this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters; this.topDownAnalysisParameters = topDownAnalysisParameters;
this.bindingTrace = bindingTrace; this.bindingTrace = bindingTrace;
this.bodiesResolveContext = bodiesResolveContext; this.bodiesResolveContext = bodiesResolveContext;
this.moduleDescriptor = moduleDescriptor; this.moduleDescriptor = moduleDescriptor;
this.bodyResolver = new BodyResolver();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver(); this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver(); this.argumentTypeResolver = new ArgumentTypeResolver();
this.expressionTypingServices = new ExpressionTypingServices(getBodiesResolveContext(), platformToKotlinClassMap); this.expressionTypingServices = new ExpressionTypingServices(bodiesResolveContext, platformToKotlinClassMap);
this.callExpressionResolver = new CallExpressionResolver(); this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver(); this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver(); this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.candidateResolver = new CandidateResolver(); this.candidateResolver = new CandidateResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker(); this.declarationsChecker = new DeclarationsChecker();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver(); this.scriptBodyResolver = new ScriptBodyResolver();
this.topDownAnalysisContext = new TopDownAnalysisContext(); this.topDownAnalysisContext = new TopDownAnalysisContext();
@@ -116,8 +116,6 @@ public class InjectorForBodyResolve {
this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters); this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setTrace(bindingTrace); this.bodyResolver.setTrace(bindingTrace);
functionAnalyzerExtension.setTrace(bindingTrace);
annotationResolver.setCallResolver(callResolver); annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices); annotationResolver.setExpressionTypingServices(expressionTypingServices);
@@ -158,6 +156,8 @@ public class InjectorForBodyResolve {
declarationsChecker.setTrace(bindingTrace); declarationsChecker.setTrace(bindingTrace);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext); scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace); scriptBodyResolver.setTrace(bindingTrace);
@@ -174,16 +174,4 @@ public class InjectorForBodyResolve {
return this.bodyResolver; return this.bodyResolver;
} }
public Project getProject() {
return this.project;
}
public BindingTrace getBindingTrace() {
return this.bindingTrace;
}
public BodiesResolveContext getBodiesResolveContext() {
return this.bodiesResolveContext;
}
} }
@@ -22,7 +22,6 @@ import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory; import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory;
import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver;
@@ -34,6 +33,7 @@ import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver; import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory; import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
@@ -50,7 +50,6 @@ public class InjectorForLazyResolve {
private final DeclarationProviderFactory declarationProviderFactory; private final DeclarationProviderFactory declarationProviderFactory;
private final BindingTrace bindingTrace; private final BindingTrace bindingTrace;
private final ResolveSession resolveSession; private final ResolveSession resolveSession;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final StorageManager storageManager; private final StorageManager storageManager;
private final PlatformToKotlinClassMap platformToKotlinClassMap; private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final AnnotationResolver annotationResolver; private final AnnotationResolver annotationResolver;
@@ -62,6 +61,7 @@ public class InjectorForLazyResolve {
private final DelegatedPropertyResolver delegatedPropertyResolver; private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver; private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final CandidateResolver candidateResolver; private final CandidateResolver candidateResolver;
private final JetImportsFactory jetImportsFactory; private final JetImportsFactory jetImportsFactory;
private final ScopeProvider scopeProvider; private final ScopeProvider scopeProvider;
@@ -79,7 +79,6 @@ public class InjectorForLazyResolve {
this.declarationProviderFactory = declarationProviderFactory; this.declarationProviderFactory = declarationProviderFactory;
this.bindingTrace = bindingTrace; this.bindingTrace = bindingTrace;
this.resolveSession = new ResolveSession(project, globalContext, moduleDescriptor, declarationProviderFactory, bindingTrace); this.resolveSession = new ResolveSession(project, globalContext, moduleDescriptor, declarationProviderFactory, bindingTrace);
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.storageManager = resolveSession.getStorageManager(); this.storageManager = resolveSession.getStorageManager();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
@@ -91,6 +90,7 @@ public class InjectorForLazyResolve {
this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver(); this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.candidateResolver = new CandidateResolver(); this.candidateResolver = new CandidateResolver();
this.jetImportsFactory = new JetImportsFactory(); this.jetImportsFactory = new JetImportsFactory();
this.scopeProvider = new ScopeProvider(getResolveSession()); this.scopeProvider = new ScopeProvider(getResolveSession());
@@ -16,13 +16,12 @@
package org.jetbrains.jet.di; package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.context.GlobalContext;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.context.GlobalContext;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
@@ -32,6 +31,7 @@ import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver; import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver; import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
@@ -39,13 +39,12 @@ import javax.annotation.PreDestroy;
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForMacros { public class InjectorForMacros {
private final ExpressionTypingServices expressionTypingServices;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final GlobalContext globalContext;
private final StorageManager storageManager;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final Project project; private final Project project;
private final ModuleDescriptor moduleDescriptor; private final ModuleDescriptor moduleDescriptor;
private final ExpressionTypingServices expressionTypingServices;
private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final GlobalContext globalContext;
private final StorageManager storageManager;
private final AnnotationResolver annotationResolver; private final AnnotationResolver annotationResolver;
private final CallResolver callResolver; private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver; private final ArgumentTypeResolver argumentTypeResolver;
@@ -55,18 +54,18 @@ public class InjectorForMacros {
private final CallExpressionResolver callExpressionResolver; private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver; private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver; private final DelegatedPropertyResolver delegatedPropertyResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
public InjectorForMacros( public InjectorForMacros(
@NotNull Project project, @NotNull Project project,
@NotNull ModuleDescriptor moduleDescriptor @NotNull ModuleDescriptor moduleDescriptor
) { ) {
this.project = project;
this.moduleDescriptor = moduleDescriptor;
this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext(); this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.expressionTypingServices = new ExpressionTypingServices(globalContext, platformToKotlinClassMap); this.expressionTypingServices = new ExpressionTypingServices(globalContext, platformToKotlinClassMap);
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.storageManager = globalContext.getStorageManager(); this.storageManager = globalContext.getStorageManager();
this.project = project;
this.moduleDescriptor = moduleDescriptor;
this.annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver(); this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver(); this.argumentTypeResolver = new ArgumentTypeResolver();
@@ -76,6 +75,7 @@ public class InjectorForMacros {
this.callExpressionResolver = new CallExpressionResolver(); this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver(); this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.expressionTypingServices.setAnnotationResolver(annotationResolver); this.expressionTypingServices.setAnnotationResolver(annotationResolver);
this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver); this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
@@ -122,8 +122,4 @@ public class InjectorForMacros {
return this.expressionTypingServices; return this.expressionTypingServices;
} }
public Project getProject() {
return this.project;
}
} }
@@ -16,39 +16,39 @@
package org.jetbrains.jet.di; package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
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.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl; import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider; import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.DeclarationResolver; import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver; import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver; import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.ImportsResolver; import org.jetbrains.jet.lang.resolve.ImportsResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory; import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver; import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
import org.jetbrains.jet.lang.resolve.OverloadResolver; import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
@@ -56,39 +56,39 @@ import javax.annotation.PreDestroy;
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForTopDownAnalyzerBasic { public class InjectorForTopDownAnalyzerBasic {
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final BodyResolver bodyResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final DescriptorResolver descriptorResolver;
private final StorageManager storageManager;
private final CallResolverExtensionProvider callResolverExtensionProvider;
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 ModuleDescriptorImpl moduleDescriptor; private final ModuleDescriptorImpl moduleDescriptor;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy; private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final StorageManager storageManager;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider; private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final PlatformToKotlinClassMap platformToKotlinClassMap; private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final DeclarationResolver declarationResolver; private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final BodyResolver bodyResolver;
private final AnnotationResolver annotationResolver; private final AnnotationResolver annotationResolver;
private final CallResolver callResolver; private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver; private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver; private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver; private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final CandidateResolver candidateResolver; private final CandidateResolver candidateResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
private final DeclarationResolver declarationResolver;
private final ImportsResolver importsResolver; private final ImportsResolver importsResolver;
private final JetImportsFactory jetImportsFactory; private final JetImportsFactory jetImportsFactory;
private final ScriptHeaderResolver scriptHeaderResolver; private final ScriptHeaderResolver scriptHeaderResolver;
private final OverloadResolver overloadResolver; private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver; private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver; private final TypeHierarchyResolver typeHierarchyResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
public InjectorForTopDownAnalyzerBasic( public InjectorForTopDownAnalyzerBasic(
@NotNull Project project, @NotNull Project project,
@@ -97,39 +97,39 @@ public class InjectorForTopDownAnalyzerBasic {
@NotNull ModuleDescriptorImpl moduleDescriptor, @NotNull ModuleDescriptorImpl moduleDescriptor,
@NotNull PlatformToKotlinClassMap platformToKotlinClassMap @NotNull PlatformToKotlinClassMap platformToKotlinClassMap
) { ) {
this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.bodyResolver = new BodyResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.descriptorResolver = new DescriptorResolver();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.project = project; this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters; this.topDownAnalysisParameters = topDownAnalysisParameters;
this.bindingTrace = bindingTrace; this.bindingTrace = bindingTrace;
this.moduleDescriptor = moduleDescriptor; this.moduleDescriptor = moduleDescriptor;
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl(); this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor()); this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.platformToKotlinClassMap = platformToKotlinClassMap; this.platformToKotlinClassMap = platformToKotlinClassMap;
this.declarationResolver = new DeclarationResolver(); this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
this.bodyResolver = new BodyResolver();
this.annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver(); this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver(); this.argumentTypeResolver = new ArgumentTypeResolver();
this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), platformToKotlinClassMap); this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), platformToKotlinClassMap);
this.callExpressionResolver = new CallExpressionResolver(); this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver(); this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.candidateResolver = new CandidateResolver(); this.candidateResolver = new CandidateResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.declarationResolver = new DeclarationResolver();
this.importsResolver = new ImportsResolver(); this.importsResolver = new ImportsResolver();
this.jetImportsFactory = new JetImportsFactory(); this.jetImportsFactory = new JetImportsFactory();
this.scriptHeaderResolver = new ScriptHeaderResolver(); this.scriptHeaderResolver = new ScriptHeaderResolver();
this.overloadResolver = new OverloadResolver(); this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver(); this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver(); this.typeHierarchyResolver = new TypeHierarchyResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setBodyResolver(bodyResolver);
this.topDownAnalyzer.setContext(topDownAnalysisContext); this.topDownAnalyzer.setContext(topDownAnalysisContext);
@@ -144,35 +144,17 @@ public class InjectorForTopDownAnalyzerBasic {
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters); this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setAnnotationResolver(annotationResolver); bodyResolver.setAnnotationResolver(annotationResolver);
this.bodyResolver.setCallResolver(callResolver); bodyResolver.setCallResolver(callResolver);
this.bodyResolver.setContext(topDownAnalysisContext); bodyResolver.setContext(topDownAnalysisContext);
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
this.bodyResolver.setDeclarationsChecker(declarationsChecker); bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices); bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters); bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setTrace(bindingTrace); bodyResolver.setTrace(bindingTrace);
this.controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.controlFlowAnalyzer.setTrace(bindingTrace);
this.declarationsChecker.setTrace(bindingTrace);
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setStorageManager(storageManager);
this.descriptorResolver.setTypeResolver(typeResolver);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
annotationResolver.setCallResolver(callResolver); annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices); annotationResolver.setExpressionTypingServices(expressionTypingServices);
@@ -195,12 +177,38 @@ public class InjectorForTopDownAnalyzerBasic {
callExpressionResolver.setExpressionTypingServices(expressionTypingServices); callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setAnnotationResolver(annotationResolver);
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setStorageManager(storageManager);
descriptorResolver.setTypeResolver(typeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
typeResolver.setAnnotationResolver(annotationResolver); typeResolver.setAnnotationResolver(annotationResolver);
typeResolver.setModuleDescriptor(moduleDescriptor); typeResolver.setModuleDescriptor(moduleDescriptor);
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
candidateResolver.setArgumentTypeResolver(argumentTypeResolver); candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
controlFlowAnalyzer.setTrace(bindingTrace);
declarationsChecker.setTrace(bindingTrace);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
importsResolver.setContext(topDownAnalysisContext); importsResolver.setContext(topDownAnalysisContext);
importsResolver.setImportsFactory(jetImportsFactory); importsResolver.setImportsFactory(jetImportsFactory);
importsResolver.setModuleDescriptor(moduleDescriptor); importsResolver.setModuleDescriptor(moduleDescriptor);
@@ -229,20 +237,16 @@ public class InjectorForTopDownAnalyzerBasic {
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver); typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
typeHierarchyResolver.setTrace(bindingTrace); typeHierarchyResolver.setTrace(bindingTrace);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
} }
@PreDestroy @PreDestroy
public void destroy() { public void destroy() {
} }
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
public TopDownAnalyzer getTopDownAnalyzer() { public TopDownAnalyzer getTopDownAnalyzer() {
return this.topDownAnalyzer; return this.topDownAnalyzer;
} }
@@ -251,32 +255,4 @@ public class InjectorForTopDownAnalyzerBasic {
return this.topDownAnalysisContext; return this.topDownAnalysisContext;
} }
public BodyResolver getBodyResolver() {
return this.bodyResolver;
}
public ControlFlowAnalyzer getControlFlowAnalyzer() {
return this.controlFlowAnalyzer;
}
public DeclarationsChecker getDeclarationsChecker() {
return this.declarationsChecker;
}
public DescriptorResolver getDescriptorResolver() {
return this.descriptorResolver;
}
public Project getProject() {
return this.project;
}
public BindingTrace getBindingTrace() {
return this.bindingTrace;
}
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
} }
@@ -16,23 +16,22 @@
package org.jetbrains.jet.di; package org.jetbrains.jet.di;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorResolver; import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.TypeResolver; import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.storage.StorageManager; import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.context.GlobalContext;
import com.intellij.openapi.project.Project;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
@@ -40,45 +39,43 @@ import javax.annotation.PreDestroy;
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForTests { public class InjectorForTests {
private final Project project;
private final ModuleDescriptor moduleDescriptor;
private final DescriptorResolver descriptorResolver; private final DescriptorResolver descriptorResolver;
private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingServices expressionTypingServices;
private final TypeResolver typeResolver; private final TypeResolver typeResolver;
private final CallResolver callResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final StorageManager storageManager; private final StorageManager storageManager;
private final KotlinBuiltIns kotlinBuiltIns;
private final PlatformToKotlinClassMap platformToKotlinClassMap; private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final GlobalContext globalContext; private final GlobalContext globalContext;
private final Project project;
private final ModuleDescriptor moduleDescriptor;
private final AnnotationResolver annotationResolver; private final AnnotationResolver annotationResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver; private final CallResolver callResolver;
private final CallExpressionResolver callExpressionResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final ArgumentTypeResolver argumentTypeResolver; private final ArgumentTypeResolver argumentTypeResolver;
private final CandidateResolver candidateResolver; private final CandidateResolver candidateResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final CallExpressionResolver callExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final QualifiedExpressionResolver qualifiedExpressionResolver;
public InjectorForTests( public InjectorForTests(
@NotNull Project project, @NotNull Project project,
@NotNull ModuleDescriptor moduleDescriptor @NotNull ModuleDescriptor moduleDescriptor
) { ) {
this.project = project;
this.moduleDescriptor = moduleDescriptor;
this.descriptorResolver = new DescriptorResolver(); this.descriptorResolver = new DescriptorResolver();
this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext(); this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext();
this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap();
this.expressionTypingServices = new ExpressionTypingServices(globalContext, platformToKotlinClassMap); this.expressionTypingServices = new ExpressionTypingServices(globalContext, platformToKotlinClassMap);
this.typeResolver = new TypeResolver(); this.typeResolver = new TypeResolver();
this.callResolver = new CallResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.storageManager = globalContext.getStorageManager(); this.storageManager = globalContext.getStorageManager();
this.kotlinBuiltIns = KotlinBuiltIns.getInstance();
this.project = project;
this.moduleDescriptor = moduleDescriptor;
this.annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.callResolver = new CallResolver();
this.callExpressionResolver = new CallExpressionResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.argumentTypeResolver = new ArgumentTypeResolver(); this.argumentTypeResolver = new ArgumentTypeResolver();
this.candidateResolver = new CandidateResolver(); this.candidateResolver = new CandidateResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.callExpressionResolver = new CallExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.descriptorResolver.setAnnotationResolver(annotationResolver); this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
@@ -98,23 +95,23 @@ public class InjectorForTests {
this.typeResolver.setModuleDescriptor(moduleDescriptor); this.typeResolver.setModuleDescriptor(moduleDescriptor);
this.typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); this.typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
this.callResolver.setArgumentTypeResolver(argumentTypeResolver);
this.callResolver.setCandidateResolver(candidateResolver);
this.callResolver.setExpressionTypingServices(expressionTypingServices);
this.callResolver.setTypeResolver(typeResolver);
annotationResolver.setCallResolver(callResolver); annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices); annotationResolver.setExpressionTypingServices(expressionTypingServices);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); callResolver.setArgumentTypeResolver(argumentTypeResolver);
callResolver.setCandidateResolver(candidateResolver);
callExpressionResolver.setExpressionTypingServices(expressionTypingServices); callResolver.setExpressionTypingServices(expressionTypingServices);
callResolver.setTypeResolver(typeResolver);
argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
argumentTypeResolver.setTypeResolver(typeResolver); argumentTypeResolver.setTypeResolver(typeResolver);
candidateResolver.setArgumentTypeResolver(argumentTypeResolver); candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
} }
@PreDestroy @PreDestroy
@@ -133,16 +130,4 @@ public class InjectorForTests {
return this.typeResolver; return this.typeResolver;
} }
public CallResolver getCallResolver() {
return this.callResolver;
}
public KotlinBuiltIns getKotlinBuiltIns() {
return this.kotlinBuiltIns;
}
public Project getProject() {
return this.project;
}
} }
@@ -67,9 +67,8 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture {
public void setUp() throws Exception { public void setUp() throws Exception {
InjectorForTests injector = new InjectorForTests(getProject(), root); InjectorForTests injector = new InjectorForTests(getProject(), root);
KotlinBuiltIns builtIns = injector.getKotlinBuiltIns();
descriptorResolver = injector.getDescriptorResolver(); descriptorResolver = injector.getDescriptorResolver();
scope = createScope(builtIns.getBuiltInsPackageScope()); scope = createScope(KotlinBuiltIns.getInstance().getBuiltInsPackageScope());
} }
public void tearDown() throws Exception { public void tearDown() throws Exception {
@@ -34,7 +34,6 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
public class JetOverloadTest extends JetLiteFixture { public class JetOverloadTest extends JetLiteFixture {
private ModuleDescriptor root = JetTestUtils.createEmptyModule("<test_root>"); private ModuleDescriptor root = JetTestUtils.createEmptyModule("<test_root>");
private KotlinBuiltIns builtIns;
private DescriptorResolver descriptorResolver; private DescriptorResolver descriptorResolver;
@Override @Override
@@ -46,13 +45,11 @@ public class JetOverloadTest extends JetLiteFixture {
public void setUp() throws Exception { public void setUp() throws Exception {
super.setUp(); super.setUp();
InjectorForTests injector = new InjectorForTests(getProject(), root); InjectorForTests injector = new InjectorForTests(getProject(), root);
builtIns = injector.getKotlinBuiltIns();
descriptorResolver = injector.getDescriptorResolver(); descriptorResolver = injector.getDescriptorResolver();
} }
@Override @Override
protected void tearDown() throws Exception { protected void tearDown() throws Exception {
builtIns = null;
descriptorResolver = null; descriptorResolver = null;
super.tearDown(); super.tearDown();
} }
@@ -182,7 +179,7 @@ public class JetOverloadTest extends JetLiteFixture {
private FunctionDescriptor makeFunction(String funDecl) { private FunctionDescriptor makeFunction(String funDecl) {
JetNamedFunction function = JetPsiFactory.createFunction(getProject(), funDecl); JetNamedFunction function = JetPsiFactory.createFunction(getProject(), funDecl);
return descriptorResolver.resolveFunctionDescriptor(root, builtIns.getBuiltInsPackageScope(), function, return descriptorResolver.resolveFunctionDescriptor(root, KotlinBuiltIns.getInstance().getBuiltInsPackageScope(), function,
JetTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY); JetTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY);
} }
} }
@@ -34,7 +34,6 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
public class JetOverridingTest extends JetLiteFixture { public class JetOverridingTest extends JetLiteFixture {
private ModuleDescriptor root = JetTestUtils.createEmptyModule("<test_root>"); private ModuleDescriptor root = JetTestUtils.createEmptyModule("<test_root>");
private KotlinBuiltIns builtIns;
private DescriptorResolver descriptorResolver; private DescriptorResolver descriptorResolver;
@Override @Override
@@ -46,13 +45,11 @@ public class JetOverridingTest extends JetLiteFixture {
public void setUp() throws Exception { public void setUp() throws Exception {
super.setUp(); super.setUp();
InjectorForTests injector = new InjectorForTests(getProject(), root); InjectorForTests injector = new InjectorForTests(getProject(), root);
builtIns = injector.getKotlinBuiltIns();
descriptorResolver = injector.getDescriptorResolver(); descriptorResolver = injector.getDescriptorResolver();
} }
@Override @Override
protected void tearDown() throws Exception { protected void tearDown() throws Exception {
builtIns = null;
descriptorResolver = null; descriptorResolver = null;
super.tearDown(); super.tearDown();
} }
@@ -172,7 +169,7 @@ public class JetOverridingTest extends JetLiteFixture {
private FunctionDescriptor makeFunction(String funDecl) { private FunctionDescriptor makeFunction(String funDecl) {
JetNamedFunction function = JetPsiFactory.createFunction(getProject(), funDecl); JetNamedFunction function = JetPsiFactory.createFunction(getProject(), funDecl);
return descriptorResolver.resolveFunctionDescriptor(root, builtIns.getBuiltInsPackageScope(), function, return descriptorResolver.resolveFunctionDescriptor(root, KotlinBuiltIns.getInstance().getBuiltInsPackageScope(), function,
JetTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY); JetTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY);
} }
} }
@@ -23,8 +23,6 @@ import org.jetbrains.jet.lang.PlatformToKotlinClassMap
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl
import org.jetbrains.jet.lang.resolve.* import org.jetbrains.jet.lang.resolve.*
import org.jetbrains.jet.lang.resolve.calls.CallResolver
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider
import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver
import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap import org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap
@@ -34,7 +32,6 @@ import org.jetbrains.jet.lang.resolve.lazy.ResolveSession
import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
import org.jetbrains.jet.storage.StorageManager import org.jetbrains.jet.storage.StorageManager
import org.jetbrains.jet.di.* import org.jetbrains.jet.di.*
import kotlin.properties.Delegates import kotlin.properties.Delegates
@@ -60,42 +57,36 @@ public val injectorGenerators: List<DependencyInjectorGenerator> by Delegates.la
public class GenerateInjectors { public class GenerateInjectors {
private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() { private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() {
parameters(
javaClass<Project>(),
javaClass<TopDownAnalysisParameters>(),
javaClass<BindingTrace>()
)
publicParameter(javaClass<ModuleDescriptorImpl>())
publicFields( publicFields(
javaClass<TopDownAnalyzer>(), javaClass<TopDownAnalyzer>(),
javaClass<TopDownAnalysisContext>(), javaClass<TopDownAnalysisContext>()
javaClass<BodyResolver>(),
javaClass<ControlFlowAnalyzer>(),
javaClass<DeclarationsChecker>(),
javaClass<DescriptorResolver>()
) )
field(javaClass<StorageManager>(), init = GivenExpression("topDownAnalysisParameters.getStorageManager()"))
field(javaClass<CallResolverExtensionProvider>())
publicParameter(javaClass<Project>()) field(javaClass<StorageManager>(), init = GivenExpression("topDownAnalysisParameters.getStorageManager()"))
parameter(javaClass<TopDownAnalysisParameters>()) field(javaClass<MutablePackageFragmentProvider>())
publicParameters(
javaClass<BindingTrace>(),
javaClass<ModuleDescriptorImpl>()
)
} }
private val generatorForTopDownAnalyzerBasic = private val generatorForTopDownAnalyzerBasic =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", javaClass<GenerateInjectors>()) { generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", javaClass<GenerateInjectors>()) {
commonForTopDownAnalyzer() commonForTopDownAnalyzer()
fields(
javaClass<DependencyClassByQualifiedNameResolverDummyImpl>(),
javaClass<MutablePackageFragmentProvider>()
)
parameter(javaClass<PlatformToKotlinClassMap>()) parameter(javaClass<PlatformToKotlinClassMap>())
field(javaClass<DependencyClassByQualifiedNameResolverDummyImpl>())
} }
private val generatorForTopDownAnalyzerForJs = private val generatorForTopDownAnalyzerForJs =
generator("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", javaClass<GenerateInjectors>()) { generator("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", javaClass<GenerateInjectors>()) {
commonForTopDownAnalyzer() commonForTopDownAnalyzer()
fields(
javaClass<DependencyClassByQualifiedNameResolverDummyImpl>(), field(javaClass<DependencyClassByQualifiedNameResolverDummyImpl>())
javaClass<MutablePackageFragmentProvider>()
)
field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY")) field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY"))
} }
@@ -103,7 +94,9 @@ public class GenerateInjectors {
generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm", javaClass<GenerateInjectors>()) { generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJvm", javaClass<GenerateInjectors>()) {
implementInterface(javaClass<InjectorForTopDownAnalyzer>()) implementInterface(javaClass<InjectorForTopDownAnalyzer>())
commonForTopDownAnalyzer() commonForTopDownAnalyzer()
publicField(javaClass<JavaDescriptorResolver>()) publicField(javaClass<JavaDescriptorResolver>())
field(javaClass<JavaToKotlinClassMap>(), init = GivenExpression("org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance()")) field(javaClass<JavaToKotlinClassMap>(), init = GivenExpression("org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance()"))
fields( fields(
javaClass<JavaClassFinderImpl>(), javaClass<JavaClassFinderImpl>(),
@@ -119,7 +112,6 @@ public class GenerateInjectors {
private val generatorForJavaDescriptorResolver = private val generatorForJavaDescriptorResolver =
generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver", javaClass<GenerateInjectors>()) { generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver", javaClass<GenerateInjectors>()) {
parameters( parameters(
javaClass<Project>(), javaClass<Project>(),
javaClass<BindingTrace>() javaClass<BindingTrace>()
@@ -127,8 +119,11 @@ public class GenerateInjectors {
publicField(javaClass<GlobalContextImpl>(), publicField(javaClass<GlobalContextImpl>(),
init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"))
field(javaClass<StorageManager>(), init = GivenExpression("globalContext.getStorageManager()")) publicField(javaClass<ModuleDescriptorImpl>(), name = "module",
init = GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"<fake-jdr-module>\")"))
publicField(javaClass<JavaDescriptorResolver>())
publicField(javaClass<JavaClassFinderImpl>()) publicField(javaClass<JavaClassFinderImpl>())
fields( fields(
javaClass<TraceBasedExternalSignatureResolver>(), javaClass<TraceBasedExternalSignatureResolver>(),
javaClass<TraceBasedJavaResolverCache>(), javaClass<TraceBasedJavaResolverCache>(),
@@ -136,58 +131,57 @@ public class GenerateInjectors {
javaClass<PsiBasedMethodSignatureChecker>(), javaClass<PsiBasedMethodSignatureChecker>(),
javaClass<PsiBasedExternalAnnotationResolver>() javaClass<PsiBasedExternalAnnotationResolver>()
) )
publicField(javaClass<JavaDescriptorResolver>()) field(javaClass<StorageManager>(), init = GivenExpression("globalContext.getStorageManager()"))
field(javaClass<VirtualFileFinder>(), field(javaClass<VirtualFileFinder>(),
init = GivenExpression(javaClass<VirtualFileFinder>().getName() + ".SERVICE.getInstance(project)")) init = GivenExpression(javaClass<VirtualFileFinder>().getName() + ".SERVICE.getInstance(project)"))
publicField(javaClass<ModuleDescriptorImpl>(), name = "module",
init = GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"<fake-jdr-module>\")"))
} }
private val generatorForMacro = private val generatorForMacro =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros", javaClass<GenerateInjectors>()) { generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros", javaClass<GenerateInjectors>()) {
parameters(
javaClass<Project>(),
javaClass<ModuleDescriptor>()
)
publicField(javaClass<ExpressionTypingServices>()) publicField(javaClass<ExpressionTypingServices>())
field(javaClass<CallResolverExtensionProvider>())
field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"))
field(javaClass<GlobalContext>(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) field(javaClass<GlobalContext>(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"))
field(javaClass<StorageManager>(), init = GivenExpression("globalContext.getStorageManager()")) field(javaClass<StorageManager>(), init = GivenExpression("globalContext.getStorageManager()"))
field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"))
publicParameter(javaClass<Project>())
parameter(javaClass<ModuleDescriptor>())
} }
private val generatorForTests = private val generatorForTests =
generator("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests", javaClass<GenerateInjectors>()) { generator("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests", javaClass<GenerateInjectors>()) {
parameters(
javaClass<Project>(),
javaClass<ModuleDescriptor>()
)
publicFields( publicFields(
javaClass<DescriptorResolver>(), javaClass<DescriptorResolver>(),
javaClass<ExpressionTypingServices>(), javaClass<ExpressionTypingServices>(),
javaClass<TypeResolver>(), javaClass<TypeResolver>()
javaClass<CallResolver>()
) )
field(javaClass<CallResolverExtensionProvider>())
field(javaClass<StorageManager>(), init = GivenExpression("globalContext.getStorageManager()")) field(javaClass<StorageManager>(), init = GivenExpression("globalContext.getStorageManager()"))
publicField(javaClass<KotlinBuiltIns>(), init = GivenExpression("KotlinBuiltIns.getInstance()"))
field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")) field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"))
field(javaClass<GlobalContext>(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) field(javaClass<GlobalContext>(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()"))
publicParameter(javaClass<Project>())
parameter(javaClass<ModuleDescriptor>())
} }
private val generatorForBodyResolve = private val generatorForBodyResolve =
generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve", javaClass<GenerateInjectors>()) { generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve", javaClass<GenerateInjectors>()) {
publicField(javaClass<BodyResolver>()) parameters(
field(javaClass<CallResolverExtensionProvider>()) javaClass<Project>(),
field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")) javaClass<TopDownAnalysisParameters>(),
field(javaClass<FunctionAnalyzerExtension>())
field(javaClass<StorageManager>(), init = GivenExpression("topDownAnalysisParameters.getStorageManager()"))
publicParameter(javaClass<Project>())
parameter(javaClass<TopDownAnalysisParameters>())
publicParameters(
javaClass<BindingTrace>(), javaClass<BindingTrace>(),
javaClass<BodiesResolveContext>() javaClass<BodiesResolveContext>(),
javaClass<ModuleDescriptor>()
) )
parameter(javaClass<ModuleDescriptor>())
publicField(javaClass<BodyResolver>())
field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"))
field(javaClass<StorageManager>(), init = GivenExpression("topDownAnalysisParameters.getStorageManager()"))
} }
private val generatorForLazyResolve = private val generatorForLazyResolve =
@@ -201,7 +195,7 @@ public class GenerateInjectors {
) )
publicField(javaClass<ResolveSession>()) publicField(javaClass<ResolveSession>())
field(javaClass<CallResolverExtensionProvider>())
field(javaClass<StorageManager>(), init = GivenExpression("resolveSession.getStorageManager()")) field(javaClass<StorageManager>(), init = GivenExpression("resolveSession.getStorageManager()"))
field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")) field(javaClass<PlatformToKotlinClassMap>(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()"))
} }
@@ -92,15 +92,16 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
Predicates.<PsiFile>alwaysFalse(), true, false, Collections.<AnalyzerScriptParameter>emptyList()); Predicates.<PsiFile>alwaysFalse(), true, false, Collections.<AnalyzerScriptParameter>emptyList());
ModuleDescriptorImpl module = new ModuleDescriptorImpl( ModuleDescriptorImpl module = new ModuleDescriptorImpl(
Name.special("<fake_module>"), Collections.<ImportPath>emptyList(), PlatformToKotlinClassMap.EMPTY); Name.special("<fake_module>"), Collections.<ImportPath>emptyList(), PlatformToKotlinClassMap.EMPTY);
BindingTraceContext trace = new BindingTraceContext();
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic( InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
myProject, topDownAnalysisParameters, new BindingTraceContext(), module, PlatformToKotlinClassMap.EMPTY); myProject, topDownAnalysisParameters, trace, module, PlatformToKotlinClassMap.EMPTY);
TopDownAnalyzer analyzer = injector.getTopDownAnalyzer(); TopDownAnalyzer analyzer = injector.getTopDownAnalyzer();
analyzer.analyzeFiles(jetBuiltInsFiles, Collections.<AnalyzerScriptParameter>emptyList()); analyzer.analyzeFiles(jetBuiltInsFiles, Collections.<AnalyzerScriptParameter>emptyList());
builtinsPackageFragment = analyzer.getPackageFragmentProvider().getOrCreateFragment(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME); builtinsPackageFragment = analyzer.getPackageFragmentProvider().getOrCreateFragment(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME);
builtInsSources = Sets.newHashSet(jetBuiltInsFiles); builtInsSources = Sets.newHashSet(jetBuiltInsFiles);
bindingContext = injector.getBindingTrace().getBindingContext(); bindingContext = trace.getBindingContext();
} }
}; };
@@ -16,39 +16,39 @@
package org.jetbrains.jet.di; package org.jetbrains.jet.di;
import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
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.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl; import org.jetbrains.jet.lang.resolve.TopDownAnalyzer;
import org.jetbrains.jet.lang.resolve.TopDownAnalysisContext;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider; import org.jetbrains.jet.lang.resolve.MutablePackageFragmentProvider;
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolverDummyImpl;
import org.jetbrains.jet.lang.PlatformToKotlinClassMap; import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.resolve.DeclarationResolver; import org.jetbrains.jet.lang.resolve.BodyResolver;
import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver;
import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver; import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.TypeResolver; import org.jetbrains.jet.lang.resolve.TypeResolver;
import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
import org.jetbrains.jet.lang.resolve.calls.CandidateResolver; import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
import org.jetbrains.jet.lang.resolve.ControlFlowAnalyzer;
import org.jetbrains.jet.lang.resolve.DeclarationsChecker;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.jet.lang.resolve.DeclarationResolver;
import org.jetbrains.jet.lang.resolve.ImportsResolver; import org.jetbrains.jet.lang.resolve.ImportsResolver;
import org.jetbrains.jet.lang.psi.JetImportsFactory; import org.jetbrains.jet.lang.psi.JetImportsFactory;
import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver; import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver;
import org.jetbrains.jet.lang.resolve.OverloadResolver; import org.jetbrains.jet.lang.resolve.OverloadResolver;
import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.OverrideResolver;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension;
import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import javax.annotation.PreDestroy; import javax.annotation.PreDestroy;
@@ -56,39 +56,39 @@ import javax.annotation.PreDestroy;
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public class InjectorForTopDownAnalyzerForJs { public class InjectorForTopDownAnalyzerForJs {
private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final BodyResolver bodyResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final DescriptorResolver descriptorResolver;
private final StorageManager storageManager;
private final CallResolverExtensionProvider callResolverExtensionProvider;
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 ModuleDescriptorImpl moduleDescriptor; private final ModuleDescriptorImpl moduleDescriptor;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy; private final TopDownAnalyzer topDownAnalyzer;
private final TopDownAnalysisContext topDownAnalysisContext;
private final StorageManager storageManager;
private final MutablePackageFragmentProvider mutablePackageFragmentProvider; private final MutablePackageFragmentProvider mutablePackageFragmentProvider;
private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy;
private final PlatformToKotlinClassMap platformToKotlinClassMap; private final PlatformToKotlinClassMap platformToKotlinClassMap;
private final DeclarationResolver declarationResolver; private final BodyResolver bodyResolver;
private final AnnotationResolver annotationResolver; private final AnnotationResolver annotationResolver;
private final CallResolver callResolver; private final CallResolver callResolver;
private final ArgumentTypeResolver argumentTypeResolver; private final ArgumentTypeResolver argumentTypeResolver;
private final ExpressionTypingServices expressionTypingServices; private final ExpressionTypingServices expressionTypingServices;
private final CallExpressionResolver callExpressionResolver; private final CallExpressionResolver callExpressionResolver;
private final DescriptorResolver descriptorResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final TypeResolver typeResolver; private final TypeResolver typeResolver;
private final QualifiedExpressionResolver qualifiedExpressionResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver;
private final CallResolverExtensionProvider callResolverExtensionProvider;
private final CandidateResolver candidateResolver; private final CandidateResolver candidateResolver;
private final ControlFlowAnalyzer controlFlowAnalyzer;
private final DeclarationsChecker declarationsChecker;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
private final DeclarationResolver declarationResolver;
private final ImportsResolver importsResolver; private final ImportsResolver importsResolver;
private final JetImportsFactory jetImportsFactory; private final JetImportsFactory jetImportsFactory;
private final ScriptHeaderResolver scriptHeaderResolver; private final ScriptHeaderResolver scriptHeaderResolver;
private final OverloadResolver overloadResolver; private final OverloadResolver overloadResolver;
private final OverrideResolver overrideResolver; private final OverrideResolver overrideResolver;
private final TypeHierarchyResolver typeHierarchyResolver; private final TypeHierarchyResolver typeHierarchyResolver;
private final DelegatedPropertyResolver delegatedPropertyResolver;
private final FunctionAnalyzerExtension functionAnalyzerExtension;
private final ScriptBodyResolver scriptBodyResolver;
public InjectorForTopDownAnalyzerForJs( public InjectorForTopDownAnalyzerForJs(
@NotNull Project project, @NotNull Project project,
@@ -96,39 +96,39 @@ public class InjectorForTopDownAnalyzerForJs {
@NotNull BindingTrace bindingTrace, @NotNull BindingTrace bindingTrace,
@NotNull ModuleDescriptorImpl moduleDescriptor @NotNull ModuleDescriptorImpl moduleDescriptor
) { ) {
this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.bodyResolver = new BodyResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.descriptorResolver = new DescriptorResolver();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.project = project; this.project = project;
this.topDownAnalysisParameters = topDownAnalysisParameters; this.topDownAnalysisParameters = topDownAnalysisParameters;
this.bindingTrace = bindingTrace; this.bindingTrace = bindingTrace;
this.moduleDescriptor = moduleDescriptor; this.moduleDescriptor = moduleDescriptor;
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl(); this.topDownAnalyzer = new TopDownAnalyzer();
this.topDownAnalysisContext = new TopDownAnalysisContext();
this.storageManager = topDownAnalysisParameters.getStorageManager();
this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor()); this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor());
this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl();
this.platformToKotlinClassMap = org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY; this.platformToKotlinClassMap = org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY;
this.declarationResolver = new DeclarationResolver(); this.bodyResolver = new BodyResolver();
this.annotationResolver = new AnnotationResolver(); this.annotationResolver = new AnnotationResolver();
this.callResolver = new CallResolver(); this.callResolver = new CallResolver();
this.argumentTypeResolver = new ArgumentTypeResolver(); this.argumentTypeResolver = new ArgumentTypeResolver();
this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), platformToKotlinClassMap); this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), platformToKotlinClassMap);
this.callExpressionResolver = new CallExpressionResolver(); this.callExpressionResolver = new CallExpressionResolver();
this.descriptorResolver = new DescriptorResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.typeResolver = new TypeResolver(); this.typeResolver = new TypeResolver();
this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
this.callResolverExtensionProvider = new CallResolverExtensionProvider();
this.candidateResolver = new CandidateResolver(); this.candidateResolver = new CandidateResolver();
this.controlFlowAnalyzer = new ControlFlowAnalyzer();
this.declarationsChecker = new DeclarationsChecker();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.declarationResolver = new DeclarationResolver();
this.importsResolver = new ImportsResolver(); this.importsResolver = new ImportsResolver();
this.jetImportsFactory = new JetImportsFactory(); this.jetImportsFactory = new JetImportsFactory();
this.scriptHeaderResolver = new ScriptHeaderResolver(); this.scriptHeaderResolver = new ScriptHeaderResolver();
this.overloadResolver = new OverloadResolver(); this.overloadResolver = new OverloadResolver();
this.overrideResolver = new OverrideResolver(); this.overrideResolver = new OverrideResolver();
this.typeHierarchyResolver = new TypeHierarchyResolver(); this.typeHierarchyResolver = new TypeHierarchyResolver();
this.delegatedPropertyResolver = new DelegatedPropertyResolver();
this.functionAnalyzerExtension = new FunctionAnalyzerExtension();
this.scriptBodyResolver = new ScriptBodyResolver();
this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setBodyResolver(bodyResolver);
this.topDownAnalyzer.setContext(topDownAnalysisContext); this.topDownAnalyzer.setContext(topDownAnalysisContext);
@@ -143,35 +143,17 @@ public class InjectorForTopDownAnalyzerForJs {
this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters); this.topDownAnalysisContext.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setAnnotationResolver(annotationResolver); bodyResolver.setAnnotationResolver(annotationResolver);
this.bodyResolver.setCallResolver(callResolver); bodyResolver.setCallResolver(callResolver);
this.bodyResolver.setContext(topDownAnalysisContext); bodyResolver.setContext(topDownAnalysisContext);
this.bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
this.bodyResolver.setDeclarationsChecker(declarationsChecker); bodyResolver.setDeclarationsChecker(declarationsChecker);
this.bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.bodyResolver.setExpressionTypingServices(expressionTypingServices); bodyResolver.setExpressionTypingServices(expressionTypingServices);
this.bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension);
this.bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver);
this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters); bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.bodyResolver.setTrace(bindingTrace); bodyResolver.setTrace(bindingTrace);
this.controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
this.controlFlowAnalyzer.setTrace(bindingTrace);
this.declarationsChecker.setTrace(bindingTrace);
this.descriptorResolver.setAnnotationResolver(annotationResolver);
this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
this.descriptorResolver.setExpressionTypingServices(expressionTypingServices);
this.descriptorResolver.setStorageManager(storageManager);
this.descriptorResolver.setTypeResolver(typeResolver);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
annotationResolver.setCallResolver(callResolver); annotationResolver.setCallResolver(callResolver);
annotationResolver.setExpressionTypingServices(expressionTypingServices); annotationResolver.setExpressionTypingServices(expressionTypingServices);
@@ -194,12 +176,38 @@ public class InjectorForTopDownAnalyzerForJs {
callExpressionResolver.setExpressionTypingServices(expressionTypingServices); callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setAnnotationResolver(annotationResolver);
descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
descriptorResolver.setExpressionTypingServices(expressionTypingServices);
descriptorResolver.setStorageManager(storageManager);
descriptorResolver.setTypeResolver(typeResolver);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
typeResolver.setAnnotationResolver(annotationResolver); typeResolver.setAnnotationResolver(annotationResolver);
typeResolver.setModuleDescriptor(moduleDescriptor); typeResolver.setModuleDescriptor(moduleDescriptor);
typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
candidateResolver.setArgumentTypeResolver(argumentTypeResolver); candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
controlFlowAnalyzer.setTopDownAnalysisParameters(topDownAnalysisParameters);
controlFlowAnalyzer.setTrace(bindingTrace);
declarationsChecker.setTrace(bindingTrace);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
declarationResolver.setAnnotationResolver(annotationResolver);
declarationResolver.setContext(topDownAnalysisContext);
declarationResolver.setDescriptorResolver(descriptorResolver);
declarationResolver.setImportsResolver(importsResolver);
declarationResolver.setScriptHeaderResolver(scriptHeaderResolver);
declarationResolver.setTrace(bindingTrace);
importsResolver.setContext(topDownAnalysisContext); importsResolver.setContext(topDownAnalysisContext);
importsResolver.setImportsFactory(jetImportsFactory); importsResolver.setImportsFactory(jetImportsFactory);
importsResolver.setModuleDescriptor(moduleDescriptor); importsResolver.setModuleDescriptor(moduleDescriptor);
@@ -228,20 +236,16 @@ public class InjectorForTopDownAnalyzerForJs {
typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver); typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver);
typeHierarchyResolver.setTrace(bindingTrace); typeHierarchyResolver.setTrace(bindingTrace);
delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
functionAnalyzerExtension.setTrace(bindingTrace);
scriptBodyResolver.setContext(topDownAnalysisContext);
scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
scriptBodyResolver.setTrace(bindingTrace);
} }
@PreDestroy @PreDestroy
public void destroy() { public void destroy() {
} }
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
public TopDownAnalyzer getTopDownAnalyzer() { public TopDownAnalyzer getTopDownAnalyzer() {
return this.topDownAnalyzer; return this.topDownAnalyzer;
} }
@@ -250,32 +254,4 @@ public class InjectorForTopDownAnalyzerForJs {
return this.topDownAnalysisContext; return this.topDownAnalysisContext;
} }
public BodyResolver getBodyResolver() {
return this.bodyResolver;
}
public ControlFlowAnalyzer getControlFlowAnalyzer() {
return this.controlFlowAnalyzer;
}
public DeclarationsChecker getDeclarationsChecker() {
return this.declarationsChecker;
}
public DescriptorResolver getDescriptorResolver() {
return this.descriptorResolver;
}
public Project getProject() {
return this.project;
}
public BindingTrace getBindingTrace() {
return this.bindingTrace;
}
public ModuleDescriptorImpl getModuleDescriptor() {
return this.moduleDescriptor;
}
} }