From 6c77ea91c5f22150a4ea611a4deaa0a22c8d9bda Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Thu, 13 Feb 2014 16:01:12 +0400 Subject: [PATCH] Generate Injectors: simplify and remove redundancy --- .../di/InjectorForJavaDescriptorResolver.java | 32 +-- .../di/InjectorForTopDownAnalyzerForJvm.java | 184 ++++++++---------- .../jet/di/InjectorForBodyResolve.java | 48 ++--- .../jet/di/InjectorForLazyResolve.java | 6 +- .../jetbrains/jet/di/InjectorForMacros.java | 30 ++- .../di/InjectorForTopDownAnalyzerBasic.java | 184 ++++++++---------- .../jetbrains/jet/di/InjectorForTests.java | 73 +++---- .../JetDefaultModalityModifiersTest.java | 3 +- .../jetbrains/jet/types/JetOverloadTest.java | 5 +- .../jet/types/JetOverridingTest.java | 5 +- .../generators/injectors/GenerateInjectors.kt | 100 +++++----- .../references/BuiltInsReferenceResolver.java | 5 +- .../di/InjectorForTopDownAnalyzerForJs.java | 184 ++++++++---------- 13 files changed, 372 insertions(+), 487 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java index 16373ee0a97..04d85a465ed 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java @@ -19,16 +19,16 @@ package org.jetbrains.jet.di; import com.intellij.openapi.project.Project; import org.jetbrains.jet.lang.resolve.BindingTrace; 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.resolver.TraceBasedExternalSignatureResolver; 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.PsiBasedMethodSignatureChecker; 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.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver; @@ -43,16 +43,16 @@ public class InjectorForJavaDescriptorResolver { private final Project project; private final BindingTrace bindingTrace; private final GlobalContextImpl globalContext; - private final StorageManager storageManager; + private final ModuleDescriptorImpl module; + private final JavaDescriptorResolver javaDescriptorResolver; private final JavaClassFinderImpl javaClassFinder; private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver; private final TraceBasedJavaResolverCache traceBasedJavaResolverCache; private final TraceBasedErrorReporter traceBasedErrorReporter; private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker; private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver; - private final JavaDescriptorResolver javaDescriptorResolver; + private final StorageManager storageManager; private final VirtualFileFinder virtualFileFinder; - private final ModuleDescriptorImpl module; private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; private final GlobalJavaResolverContext globalJavaResolverContext; private final DeserializedDescriptorResolver deserializedDescriptorResolver; @@ -65,17 +65,17 @@ public class InjectorForJavaDescriptorResolver { this.project = project; this.bindingTrace = bindingTrace; this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext(); + this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(""); this.storageManager = globalContext.getStorageManager(); 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.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.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(""); this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule()); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule()); this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(storageManager); @@ -114,16 +114,16 @@ public class InjectorForJavaDescriptorResolver { return this.globalContext; } - public JavaClassFinderImpl getJavaClassFinder() { - return this.javaClassFinder; + public ModuleDescriptorImpl getModule() { + return this.module; } public JavaDescriptorResolver getJavaDescriptorResolver() { return this.javaDescriptorResolver; } - public ModuleDescriptorImpl getModule() { - return this.module; + public JavaClassFinderImpl getJavaClassFinder() { + return this.javaClassFinder; } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index 34ea169d436..6bf7e471cda 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -16,18 +16,14 @@ 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 org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.jet.lang.resolve.BindingTrace; 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.mapping.JavaToKotlinClassMap; 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.PsiBasedMethodSignatureChecker; 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.DeclarationResolver; +import org.jetbrains.jet.lang.resolve.BodyResolver; import org.jetbrains.jet.lang.resolve.AnnotationResolver; import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; 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.QualifiedExpressionResolver; +import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; 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.psi.JetImportsFactory; import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver; import org.jetbrains.jet.lang.resolve.OverloadResolver; import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; -import org.jetbrains.jet.lang.resolve.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.GlobalJavaResolverContext; import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver; @@ -67,18 +67,14 @@ import javax.annotation.PreDestroy; @SuppressWarnings("ALL") 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 TopDownAnalysisParameters topDownAnalysisParameters; private final BindingTrace bindingTrace; 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 JavaToKotlinClassMap javaToKotlinClassMap; private final JavaClassFinderImpl javaClassFinder; @@ -87,26 +83,30 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly private final TraceBasedErrorReporter traceBasedErrorReporter; private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker; private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver; - private final MutablePackageFragmentProvider mutablePackageFragmentProvider; private final VirtualFileFinder virtualFileFinder; - private final DeclarationResolver declarationResolver; + private final BodyResolver bodyResolver; private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; private final ExpressionTypingServices expressionTypingServices; private final CallExpressionResolver callExpressionResolver; + private final DescriptorResolver descriptorResolver; + private final DelegatedPropertyResolver delegatedPropertyResolver; private final TypeResolver typeResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver; + private final CallResolverExtensionProvider callResolverExtensionProvider; 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 JetImportsFactory jetImportsFactory; private final ScriptHeaderResolver scriptHeaderResolver; private final OverloadResolver overloadResolver; private final OverrideResolver overrideResolver; private final TypeHierarchyResolver typeHierarchyResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final ScriptBodyResolver scriptBodyResolver; private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; private final GlobalJavaResolverContext globalJavaResolverContext; private final DeserializedDescriptorResolver deserializedDescriptorResolver; @@ -118,18 +118,14 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly @NotNull BindingTrace bindingTrace, @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.topDownAnalysisParameters = topDownAnalysisParameters; this.bindingTrace = bindingTrace; 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.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project); this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(); @@ -142,25 +138,29 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor()); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModuleDescriptor()); this.javaToKotlinClassMap = org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance(); - this.mutablePackageFragmentProvider = new MutablePackageFragmentProvider(getModuleDescriptor()); - this.declarationResolver = new DeclarationResolver(); + this.bodyResolver = new BodyResolver(); this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), javaToKotlinClassMap); this.callExpressionResolver = new CallExpressionResolver(); + this.descriptorResolver = new DescriptorResolver(); + this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.typeResolver = new TypeResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); + this.callResolverExtensionProvider = new CallResolverExtensionProvider(); 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.jetImportsFactory = new JetImportsFactory(); this.scriptHeaderResolver = new ScriptHeaderResolver(); this.overloadResolver = new OverloadResolver(); this.overrideResolver = new OverrideResolver(); this.typeHierarchyResolver = new TypeHierarchyResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.scriptBodyResolver = new ScriptBodyResolver(); this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(storageManager); this.topDownAnalyzer.setBodyResolver(bodyResolver); @@ -176,29 +176,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly 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); traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); @@ -211,12 +188,17 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver); - declarationResolver.setAnnotationResolver(annotationResolver); - declarationResolver.setContext(topDownAnalysisContext); - declarationResolver.setDescriptorResolver(descriptorResolver); - declarationResolver.setImportsResolver(importsResolver); - declarationResolver.setScriptHeaderResolver(scriptHeaderResolver); - declarationResolver.setTrace(bindingTrace); + bodyResolver.setAnnotationResolver(annotationResolver); + bodyResolver.setCallResolver(callResolver); + bodyResolver.setContext(topDownAnalysisContext); + bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); + bodyResolver.setDeclarationsChecker(declarationsChecker); + bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); + bodyResolver.setExpressionTypingServices(expressionTypingServices); + bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); + bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); + bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters); + bodyResolver.setTrace(bindingTrace); annotationResolver.setCallResolver(callResolver); annotationResolver.setExpressionTypingServices(expressionTypingServices); @@ -239,12 +221,38 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly 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.setModuleDescriptor(moduleDescriptor); typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); 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.setImportsFactory(jetImportsFactory); importsResolver.setModuleDescriptor(moduleDescriptor); @@ -273,14 +281,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver); typeHierarchyResolver.setTrace(bindingTrace); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - functionAnalyzerExtension.setTrace(bindingTrace); - - scriptBodyResolver.setContext(topDownAnalysisContext); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - scriptBodyResolver.setTrace(bindingTrace); - deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer); deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter); deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver); @@ -299,6 +299,10 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly public void destroy() { } + public ModuleDescriptorImpl getModuleDescriptor() { + return this.moduleDescriptor; + } + public TopDownAnalyzer getTopDownAnalyzer() { return this.topDownAnalyzer; } @@ -307,34 +311,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly 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() { return this.javaDescriptorResolver; } diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java index 66bb139f144..65eb9d4fc5d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForBodyResolve.java @@ -16,16 +16,14 @@ 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 org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.BodiesResolveContext; 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.calls.CallResolver; 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.TypeResolver; 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.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.TopDownAnalysisContext; import org.jetbrains.annotations.NotNull; @@ -47,16 +47,14 @@ import javax.annotation.PreDestroy; @SuppressWarnings("ALL") 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 TopDownAnalysisParameters topDownAnalysisParameters; private final BindingTrace bindingTrace; private final BodiesResolveContext bodiesResolveContext; private final ModuleDescriptor moduleDescriptor; + private final BodyResolver bodyResolver; + private final PlatformToKotlinClassMap platformToKotlinClassMap; + private final StorageManager storageManager; private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; @@ -66,9 +64,11 @@ public class InjectorForBodyResolve { private final DelegatedPropertyResolver delegatedPropertyResolver; private final TypeResolver typeResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver; + private final CallResolverExtensionProvider callResolverExtensionProvider; private final CandidateResolver candidateResolver; private final ControlFlowAnalyzer controlFlowAnalyzer; private final DeclarationsChecker declarationsChecker; + private final FunctionAnalyzerExtension functionAnalyzerExtension; private final ScriptBodyResolver scriptBodyResolver; private final TopDownAnalysisContext topDownAnalysisContext; @@ -79,28 +79,28 @@ public class InjectorForBodyResolve { @NotNull BodiesResolveContext bodiesResolveContext, @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.topDownAnalysisParameters = topDownAnalysisParameters; this.bindingTrace = bindingTrace; this.bodiesResolveContext = bodiesResolveContext; this.moduleDescriptor = moduleDescriptor; + this.bodyResolver = new BodyResolver(); + this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); + this.storageManager = topDownAnalysisParameters.getStorageManager(); this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingServices = new ExpressionTypingServices(getBodiesResolveContext(), platformToKotlinClassMap); + this.expressionTypingServices = new ExpressionTypingServices(bodiesResolveContext, platformToKotlinClassMap); this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.typeResolver = new TypeResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); + this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.candidateResolver = new CandidateResolver(); this.controlFlowAnalyzer = new ControlFlowAnalyzer(); this.declarationsChecker = new DeclarationsChecker(); + this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); this.scriptBodyResolver = new ScriptBodyResolver(); this.topDownAnalysisContext = new TopDownAnalysisContext(); @@ -116,8 +116,6 @@ public class InjectorForBodyResolve { this.bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters); this.bodyResolver.setTrace(bindingTrace); - functionAnalyzerExtension.setTrace(bindingTrace); - annotationResolver.setCallResolver(callResolver); annotationResolver.setExpressionTypingServices(expressionTypingServices); @@ -158,6 +156,8 @@ public class InjectorForBodyResolve { declarationsChecker.setTrace(bindingTrace); + functionAnalyzerExtension.setTrace(bindingTrace); + scriptBodyResolver.setContext(topDownAnalysisContext); scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); scriptBodyResolver.setTrace(bindingTrace); @@ -174,16 +174,4 @@ public class InjectorForBodyResolve { return this.bodyResolver; } - public Project getProject() { - return this.project; - } - - public BindingTrace getBindingTrace() { - return this.bindingTrace; - } - - public BodiesResolveContext getBodiesResolveContext() { - return this.bodiesResolveContext; - } - } diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java index 78f96930423..633868cdbf3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForLazyResolve.java @@ -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.BindingTrace; 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.lang.PlatformToKotlinClassMap; 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.TypeResolver; 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.psi.JetImportsFactory; import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; @@ -50,7 +50,6 @@ public class InjectorForLazyResolve { private final DeclarationProviderFactory declarationProviderFactory; private final BindingTrace bindingTrace; private final ResolveSession resolveSession; - private final CallResolverExtensionProvider callResolverExtensionProvider; private final StorageManager storageManager; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final AnnotationResolver annotationResolver; @@ -62,6 +61,7 @@ public class InjectorForLazyResolve { private final DelegatedPropertyResolver delegatedPropertyResolver; private final TypeResolver typeResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver; + private final CallResolverExtensionProvider callResolverExtensionProvider; private final CandidateResolver candidateResolver; private final JetImportsFactory jetImportsFactory; private final ScopeProvider scopeProvider; @@ -79,7 +79,6 @@ public class InjectorForLazyResolve { this.declarationProviderFactory = declarationProviderFactory; this.bindingTrace = bindingTrace; this.resolveSession = new ResolveSession(project, globalContext, moduleDescriptor, declarationProviderFactory, bindingTrace); - this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.storageManager = resolveSession.getStorageManager(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.annotationResolver = new AnnotationResolver(); @@ -91,6 +90,7 @@ public class InjectorForLazyResolve { this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.typeResolver = new TypeResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); + this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.candidateResolver = new CandidateResolver(); this.jetImportsFactory = new JetImportsFactory(); this.scopeProvider = new ScopeProvider(getResolveSession()); diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java index 2178a0028e1..9e482f17cdb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForMacros.java @@ -16,13 +16,12 @@ 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 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.calls.CallResolver; 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.DescriptorResolver; import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; +import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; import org.jetbrains.annotations.NotNull; import javax.annotation.PreDestroy; @@ -39,13 +39,12 @@ import javax.annotation.PreDestroy; @SuppressWarnings("ALL") 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 ModuleDescriptor moduleDescriptor; + private final ExpressionTypingServices expressionTypingServices; + private final PlatformToKotlinClassMap platformToKotlinClassMap; + private final GlobalContext globalContext; + private final StorageManager storageManager; private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; @@ -55,18 +54,18 @@ public class InjectorForMacros { private final CallExpressionResolver callExpressionResolver; private final DescriptorResolver descriptorResolver; private final DelegatedPropertyResolver delegatedPropertyResolver; + private final CallResolverExtensionProvider callResolverExtensionProvider; public InjectorForMacros( @NotNull Project project, @NotNull ModuleDescriptor moduleDescriptor ) { + this.project = project; + this.moduleDescriptor = moduleDescriptor; this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.expressionTypingServices = new ExpressionTypingServices(globalContext, platformToKotlinClassMap); - this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.storageManager = globalContext.getStorageManager(); - this.project = project; - this.moduleDescriptor = moduleDescriptor; this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); @@ -76,6 +75,7 @@ public class InjectorForMacros { this.callExpressionResolver = new CallExpressionResolver(); this.descriptorResolver = new DescriptorResolver(); this.delegatedPropertyResolver = new DelegatedPropertyResolver(); + this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.expressionTypingServices.setAnnotationResolver(annotationResolver); this.expressionTypingServices.setCallExpressionResolver(callExpressionResolver); @@ -122,8 +122,4 @@ public class InjectorForMacros { return this.expressionTypingServices; } - public Project getProject() { - return this.project; - } - } diff --git a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java index c31772a06fd..922349b4e36 100644 --- a/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java +++ b/compiler/frontend/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerBasic.java @@ -16,39 +16,39 @@ 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 org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.jet.lang.resolve.BindingTrace; 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.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.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; 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.QualifiedExpressionResolver; +import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; 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.psi.JetImportsFactory; import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver; import org.jetbrains.jet.lang.resolve.OverloadResolver; import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; -import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; -import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension; -import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; import org.jetbrains.annotations.NotNull; import javax.annotation.PreDestroy; @@ -56,39 +56,39 @@ import javax.annotation.PreDestroy; @SuppressWarnings("ALL") 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 TopDownAnalysisParameters topDownAnalysisParameters; private final BindingTrace bindingTrace; 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 PlatformToKotlinClassMap platformToKotlinClassMap; - private final DeclarationResolver declarationResolver; + private final DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy; + private final BodyResolver bodyResolver; private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; private final ExpressionTypingServices expressionTypingServices; private final CallExpressionResolver callExpressionResolver; + private final DescriptorResolver descriptorResolver; + private final DelegatedPropertyResolver delegatedPropertyResolver; private final TypeResolver typeResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver; + private final CallResolverExtensionProvider callResolverExtensionProvider; 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 JetImportsFactory jetImportsFactory; private final ScriptHeaderResolver scriptHeaderResolver; private final OverloadResolver overloadResolver; private final OverrideResolver overrideResolver; private final TypeHierarchyResolver typeHierarchyResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final ScriptBodyResolver scriptBodyResolver; public InjectorForTopDownAnalyzerBasic( @NotNull Project project, @@ -97,39 +97,39 @@ public class InjectorForTopDownAnalyzerBasic { @NotNull ModuleDescriptorImpl moduleDescriptor, @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.topDownAnalysisParameters = topDownAnalysisParameters; this.bindingTrace = bindingTrace; 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.platformToKotlinClassMap = platformToKotlinClassMap; - this.declarationResolver = new DeclarationResolver(); + this.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl(); + this.bodyResolver = new BodyResolver(); this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), platformToKotlinClassMap); this.callExpressionResolver = new CallExpressionResolver(); + this.descriptorResolver = new DescriptorResolver(); + this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.typeResolver = new TypeResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); + this.callResolverExtensionProvider = new CallResolverExtensionProvider(); 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.jetImportsFactory = new JetImportsFactory(); this.scriptHeaderResolver = new ScriptHeaderResolver(); this.overloadResolver = new OverloadResolver(); this.overrideResolver = new OverrideResolver(); this.typeHierarchyResolver = new TypeHierarchyResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.scriptBodyResolver = new ScriptBodyResolver(); this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setContext(topDownAnalysisContext); @@ -144,35 +144,17 @@ public class InjectorForTopDownAnalyzerBasic { 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); - - declarationResolver.setAnnotationResolver(annotationResolver); - declarationResolver.setContext(topDownAnalysisContext); - declarationResolver.setDescriptorResolver(descriptorResolver); - declarationResolver.setImportsResolver(importsResolver); - declarationResolver.setScriptHeaderResolver(scriptHeaderResolver); - declarationResolver.setTrace(bindingTrace); + bodyResolver.setAnnotationResolver(annotationResolver); + bodyResolver.setCallResolver(callResolver); + bodyResolver.setContext(topDownAnalysisContext); + bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); + bodyResolver.setDeclarationsChecker(declarationsChecker); + bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); + bodyResolver.setExpressionTypingServices(expressionTypingServices); + bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); + bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); + bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters); + bodyResolver.setTrace(bindingTrace); annotationResolver.setCallResolver(callResolver); annotationResolver.setExpressionTypingServices(expressionTypingServices); @@ -195,12 +177,38 @@ public class InjectorForTopDownAnalyzerBasic { 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.setModuleDescriptor(moduleDescriptor); typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); 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.setImportsFactory(jetImportsFactory); importsResolver.setModuleDescriptor(moduleDescriptor); @@ -229,20 +237,16 @@ public class InjectorForTopDownAnalyzerBasic { typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver); typeHierarchyResolver.setTrace(bindingTrace); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - functionAnalyzerExtension.setTrace(bindingTrace); - - scriptBodyResolver.setContext(topDownAnalysisContext); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - scriptBodyResolver.setTrace(bindingTrace); - } @PreDestroy public void destroy() { } + public ModuleDescriptorImpl getModuleDescriptor() { + return this.moduleDescriptor; + } + public TopDownAnalyzer getTopDownAnalyzer() { return this.topDownAnalyzer; } @@ -251,32 +255,4 @@ public class InjectorForTopDownAnalyzerBasic { 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; - } - } diff --git a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java index db3ac206640..84db1746878 100644 --- a/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java +++ b/compiler/tests/org/jetbrains/jet/di/InjectorForTests.java @@ -16,23 +16,22 @@ 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.types.expressions.ExpressionTypingServices; 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.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.lang.PlatformToKotlinClassMap; 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.DelegatedPropertyResolver; -import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver; -import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver; +import org.jetbrains.jet.lang.resolve.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; 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 javax.annotation.PreDestroy; @@ -40,45 +39,43 @@ import javax.annotation.PreDestroy; @SuppressWarnings("ALL") public class InjectorForTests { + private final Project project; + private final ModuleDescriptor moduleDescriptor; private final DescriptorResolver descriptorResolver; private final ExpressionTypingServices expressionTypingServices; private final TypeResolver typeResolver; - private final CallResolver callResolver; - private final CallResolverExtensionProvider callResolverExtensionProvider; private final StorageManager storageManager; - private final KotlinBuiltIns kotlinBuiltIns; private final PlatformToKotlinClassMap platformToKotlinClassMap; private final GlobalContext globalContext; - private final Project project; - private final ModuleDescriptor moduleDescriptor; private final AnnotationResolver annotationResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final CallExpressionResolver callExpressionResolver; - private final QualifiedExpressionResolver qualifiedExpressionResolver; + private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; private final CandidateResolver candidateResolver; + private final DelegatedPropertyResolver delegatedPropertyResolver; + private final CallExpressionResolver callExpressionResolver; + private final CallResolverExtensionProvider callResolverExtensionProvider; + private final QualifiedExpressionResolver qualifiedExpressionResolver; public InjectorForTests( @NotNull Project project, @NotNull ModuleDescriptor moduleDescriptor ) { + this.project = project; + this.moduleDescriptor = moduleDescriptor; this.descriptorResolver = new DescriptorResolver(); this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext(); this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); this.expressionTypingServices = new ExpressionTypingServices(globalContext, platformToKotlinClassMap); this.typeResolver = new TypeResolver(); - this.callResolver = new CallResolver(); - this.callResolverExtensionProvider = new CallResolverExtensionProvider(); this.storageManager = globalContext.getStorageManager(); - this.kotlinBuiltIns = KotlinBuiltIns.getInstance(); - this.project = project; - this.moduleDescriptor = moduleDescriptor; this.annotationResolver = new AnnotationResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.callExpressionResolver = new CallExpressionResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); + this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); 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.setDelegatedPropertyResolver(delegatedPropertyResolver); @@ -98,23 +95,23 @@ public class InjectorForTests { this.typeResolver.setModuleDescriptor(moduleDescriptor); this.typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); - this.callResolver.setArgumentTypeResolver(argumentTypeResolver); - this.callResolver.setCandidateResolver(candidateResolver); - this.callResolver.setExpressionTypingServices(expressionTypingServices); - this.callResolver.setTypeResolver(typeResolver); - annotationResolver.setCallResolver(callResolver); annotationResolver.setExpressionTypingServices(expressionTypingServices); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); + callResolver.setArgumentTypeResolver(argumentTypeResolver); + callResolver.setCandidateResolver(candidateResolver); + callResolver.setExpressionTypingServices(expressionTypingServices); + callResolver.setTypeResolver(typeResolver); argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); argumentTypeResolver.setTypeResolver(typeResolver); candidateResolver.setArgumentTypeResolver(argumentTypeResolver); + delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); + + callExpressionResolver.setExpressionTypingServices(expressionTypingServices); + } @PreDestroy @@ -133,16 +130,4 @@ public class InjectorForTests { return this.typeResolver; } - public CallResolver getCallResolver() { - return this.callResolver; - } - - public KotlinBuiltIns getKotlinBuiltIns() { - return this.kotlinBuiltIns; - } - - public Project getProject() { - return this.project; - } - } diff --git a/compiler/tests/org/jetbrains/jet/types/JetDefaultModalityModifiersTest.java b/compiler/tests/org/jetbrains/jet/types/JetDefaultModalityModifiersTest.java index e82bd1c36ca..c5fe1306e9d 100644 --- a/compiler/tests/org/jetbrains/jet/types/JetDefaultModalityModifiersTest.java +++ b/compiler/tests/org/jetbrains/jet/types/JetDefaultModalityModifiersTest.java @@ -67,9 +67,8 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture { public void setUp() throws Exception { InjectorForTests injector = new InjectorForTests(getProject(), root); - KotlinBuiltIns builtIns = injector.getKotlinBuiltIns(); descriptorResolver = injector.getDescriptorResolver(); - scope = createScope(builtIns.getBuiltInsPackageScope()); + scope = createScope(KotlinBuiltIns.getInstance().getBuiltInsPackageScope()); } public void tearDown() throws Exception { diff --git a/compiler/tests/org/jetbrains/jet/types/JetOverloadTest.java b/compiler/tests/org/jetbrains/jet/types/JetOverloadTest.java index b89f38ec5fb..46823f371bf 100644 --- a/compiler/tests/org/jetbrains/jet/types/JetOverloadTest.java +++ b/compiler/tests/org/jetbrains/jet/types/JetOverloadTest.java @@ -34,7 +34,6 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; public class JetOverloadTest extends JetLiteFixture { private ModuleDescriptor root = JetTestUtils.createEmptyModule(""); - private KotlinBuiltIns builtIns; private DescriptorResolver descriptorResolver; @Override @@ -46,13 +45,11 @@ public class JetOverloadTest extends JetLiteFixture { public void setUp() throws Exception { super.setUp(); InjectorForTests injector = new InjectorForTests(getProject(), root); - builtIns = injector.getKotlinBuiltIns(); descriptorResolver = injector.getDescriptorResolver(); } @Override protected void tearDown() throws Exception { - builtIns = null; descriptorResolver = null; super.tearDown(); } @@ -182,7 +179,7 @@ public class JetOverloadTest extends JetLiteFixture { private FunctionDescriptor makeFunction(String 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); } } diff --git a/compiler/tests/org/jetbrains/jet/types/JetOverridingTest.java b/compiler/tests/org/jetbrains/jet/types/JetOverridingTest.java index 3eaa85b0dd4..0774a4ee898 100644 --- a/compiler/tests/org/jetbrains/jet/types/JetOverridingTest.java +++ b/compiler/tests/org/jetbrains/jet/types/JetOverridingTest.java @@ -34,7 +34,6 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; public class JetOverridingTest extends JetLiteFixture { private ModuleDescriptor root = JetTestUtils.createEmptyModule(""); - private KotlinBuiltIns builtIns; private DescriptorResolver descriptorResolver; @Override @@ -46,13 +45,11 @@ public class JetOverridingTest extends JetLiteFixture { public void setUp() throws Exception { super.setUp(); InjectorForTests injector = new InjectorForTests(getProject(), root); - builtIns = injector.getKotlinBuiltIns(); descriptorResolver = injector.getDescriptorResolver(); } @Override protected void tearDown() throws Exception { - builtIns = null; descriptorResolver = null; super.tearDown(); } @@ -172,7 +169,7 @@ public class JetOverridingTest extends JetLiteFixture { private FunctionDescriptor makeFunction(String 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); } } diff --git a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt index 59739a99ff0..0fb104c7231 100644 --- a/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt +++ b/generators/src/org/jetbrains/jet/generators/injectors/GenerateInjectors.kt @@ -23,8 +23,6 @@ import org.jetbrains.jet.lang.PlatformToKotlinClassMap import org.jetbrains.jet.lang.descriptors.ModuleDescriptor import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl 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.JavaDescriptorResolver 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.types.DependencyClassByQualifiedNameResolverDummyImpl 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.di.* import kotlin.properties.Delegates @@ -60,42 +57,36 @@ public val injectorGenerators: List by Delegates.la public class GenerateInjectors { private fun DependencyInjectorGenerator.commonForTopDownAnalyzer() { + parameters( + javaClass(), + javaClass(), + javaClass() + ) + publicParameter(javaClass()) + publicFields( javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass(), - javaClass() + javaClass() ) - field(javaClass(), init = GivenExpression("topDownAnalysisParameters.getStorageManager()")) - field(javaClass()) - publicParameter(javaClass()) - parameter(javaClass()) - publicParameters( - javaClass(), - javaClass() - ) + field(javaClass(), init = GivenExpression("topDownAnalysisParameters.getStorageManager()")) + field(javaClass()) } private val generatorForTopDownAnalyzerBasic = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic", javaClass()) { commonForTopDownAnalyzer() - fields( - javaClass(), - javaClass() - ) + parameter(javaClass()) + + field(javaClass()) } private val generatorForTopDownAnalyzerForJs = generator("js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs", javaClass()) { commonForTopDownAnalyzer() - fields( - javaClass(), - javaClass() - ) + + field(javaClass()) field(javaClass(), 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()) { implementInterface(javaClass()) commonForTopDownAnalyzer() + publicField(javaClass()) + field(javaClass(), init = GivenExpression("org.jetbrains.jet.lang.resolve.java.mapping.JavaToKotlinClassMap.getInstance()")) fields( javaClass(), @@ -119,7 +112,6 @@ public class GenerateInjectors { private val generatorForJavaDescriptorResolver = generator("compiler/frontend.java/src", "org.jetbrains.jet.di", "InjectorForJavaDescriptorResolver", javaClass()) { - parameters( javaClass(), javaClass() @@ -127,8 +119,11 @@ public class GenerateInjectors { publicField(javaClass(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) - field(javaClass(), init = GivenExpression("globalContext.getStorageManager()")) + publicField(javaClass(), name = "module", + init = GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"\")")) + publicField(javaClass()) publicField(javaClass()) + fields( javaClass(), javaClass(), @@ -136,58 +131,57 @@ public class GenerateInjectors { javaClass(), javaClass() ) - publicField(javaClass()) + field(javaClass(), init = GivenExpression("globalContext.getStorageManager()")) field(javaClass(), init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) - publicField(javaClass(), name = "module", - init = GivenExpression("org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule(\"\")")) } private val generatorForMacro = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForMacros", javaClass()) { + parameters( + javaClass(), + javaClass() + ) + publicField(javaClass()) - field(javaClass()) + + field(javaClass(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")) field(javaClass(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) field(javaClass(), init = GivenExpression("globalContext.getStorageManager()")) - field(javaClass(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")) - - publicParameter(javaClass()) - parameter(javaClass()) } private val generatorForTests = generator("compiler/tests", "org.jetbrains.jet.di", "InjectorForTests", javaClass()) { + parameters( + javaClass(), + javaClass() + ) + publicFields( javaClass(), javaClass(), - javaClass(), - javaClass() + javaClass() ) - field(javaClass()) + field(javaClass(), init = GivenExpression("globalContext.getStorageManager()")) - publicField(javaClass(), init = GivenExpression("KotlinBuiltIns.getInstance()")) field(javaClass(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")) field(javaClass(), init = GivenExpression("org.jetbrains.jet.context.ContextPackage.GlobalContext()")) - - publicParameter(javaClass()) - parameter(javaClass()) } private val generatorForBodyResolve = generator("compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForBodyResolve", javaClass()) { - publicField(javaClass()) - field(javaClass()) - field(javaClass(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")) - field(javaClass()) - field(javaClass(), init = GivenExpression("topDownAnalysisParameters.getStorageManager()")) - - publicParameter(javaClass()) - parameter(javaClass()) - publicParameters( + parameters( + javaClass(), + javaClass(), javaClass(), - javaClass() + javaClass(), + javaClass() ) - parameter(javaClass()) + + publicField(javaClass()) + + field(javaClass(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")) + field(javaClass(), init = GivenExpression("topDownAnalysisParameters.getStorageManager()")) } private val generatorForLazyResolve = @@ -201,7 +195,7 @@ public class GenerateInjectors { ) publicField(javaClass()) - field(javaClass()) + field(javaClass(), init = GivenExpression("resolveSession.getStorageManager()")) field(javaClass(), init = GivenExpression("moduleDescriptor.getPlatformToKotlinClassMap()")) } diff --git a/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java b/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java index 71c3386f521..4db7eb1e5dd 100644 --- a/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java +++ b/idea/src/org/jetbrains/jet/plugin/references/BuiltInsReferenceResolver.java @@ -92,15 +92,16 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { Predicates.alwaysFalse(), true, false, Collections.emptyList()); ModuleDescriptorImpl module = new ModuleDescriptorImpl( Name.special(""), Collections.emptyList(), PlatformToKotlinClassMap.EMPTY); + BindingTraceContext trace = new BindingTraceContext(); InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic( - myProject, topDownAnalysisParameters, new BindingTraceContext(), module, PlatformToKotlinClassMap.EMPTY); + myProject, topDownAnalysisParameters, trace, module, PlatformToKotlinClassMap.EMPTY); TopDownAnalyzer analyzer = injector.getTopDownAnalyzer(); analyzer.analyzeFiles(jetBuiltInsFiles, Collections.emptyList()); builtinsPackageFragment = analyzer.getPackageFragmentProvider().getOrCreateFragment(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME); builtInsSources = Sets.newHashSet(jetBuiltInsFiles); - bindingContext = injector.getBindingTrace().getBindingContext(); + bindingContext = trace.getBindingContext(); } }; diff --git a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java index f4d8658ff33..cfef431632b 100644 --- a/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java +++ b/js/js.translator/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJs.java @@ -16,39 +16,39 @@ 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 org.jetbrains.jet.lang.resolve.TopDownAnalysisParameters; import org.jetbrains.jet.lang.resolve.BindingTrace; 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.types.DependencyClassByQualifiedNameResolverDummyImpl; 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.calls.CallResolver; import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver; import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices; 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.QualifiedExpressionResolver; +import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider; 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.psi.JetImportsFactory; import org.jetbrains.jet.lang.resolve.ScriptHeaderResolver; import org.jetbrains.jet.lang.resolve.OverloadResolver; import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver; -import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver; -import org.jetbrains.jet.lang.resolve.FunctionAnalyzerExtension; -import org.jetbrains.jet.lang.resolve.ScriptBodyResolver; import org.jetbrains.annotations.NotNull; import javax.annotation.PreDestroy; @@ -56,39 +56,39 @@ import javax.annotation.PreDestroy; @SuppressWarnings("ALL") 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 TopDownAnalysisParameters topDownAnalysisParameters; private final BindingTrace bindingTrace; 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 DependencyClassByQualifiedNameResolverDummyImpl dependencyClassByQualifiedNameResolverDummy; private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final DeclarationResolver declarationResolver; + private final BodyResolver bodyResolver; private final AnnotationResolver annotationResolver; private final CallResolver callResolver; private final ArgumentTypeResolver argumentTypeResolver; private final ExpressionTypingServices expressionTypingServices; private final CallExpressionResolver callExpressionResolver; + private final DescriptorResolver descriptorResolver; + private final DelegatedPropertyResolver delegatedPropertyResolver; private final TypeResolver typeResolver; private final QualifiedExpressionResolver qualifiedExpressionResolver; + private final CallResolverExtensionProvider callResolverExtensionProvider; 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 JetImportsFactory jetImportsFactory; private final ScriptHeaderResolver scriptHeaderResolver; private final OverloadResolver overloadResolver; private final OverrideResolver overrideResolver; private final TypeHierarchyResolver typeHierarchyResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final ScriptBodyResolver scriptBodyResolver; public InjectorForTopDownAnalyzerForJs( @NotNull Project project, @@ -96,39 +96,39 @@ public class InjectorForTopDownAnalyzerForJs { @NotNull BindingTrace bindingTrace, @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.topDownAnalysisParameters = topDownAnalysisParameters; this.bindingTrace = bindingTrace; 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.dependencyClassByQualifiedNameResolverDummy = new DependencyClassByQualifiedNameResolverDummyImpl(); this.platformToKotlinClassMap = org.jetbrains.jet.lang.PlatformToKotlinClassMap.EMPTY; - this.declarationResolver = new DeclarationResolver(); + this.bodyResolver = new BodyResolver(); this.annotationResolver = new AnnotationResolver(); this.callResolver = new CallResolver(); this.argumentTypeResolver = new ArgumentTypeResolver(); this.expressionTypingServices = new ExpressionTypingServices(getTopDownAnalysisContext(), platformToKotlinClassMap); this.callExpressionResolver = new CallExpressionResolver(); + this.descriptorResolver = new DescriptorResolver(); + this.delegatedPropertyResolver = new DelegatedPropertyResolver(); this.typeResolver = new TypeResolver(); this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); + this.callResolverExtensionProvider = new CallResolverExtensionProvider(); 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.jetImportsFactory = new JetImportsFactory(); this.scriptHeaderResolver = new ScriptHeaderResolver(); this.overloadResolver = new OverloadResolver(); this.overrideResolver = new OverrideResolver(); this.typeHierarchyResolver = new TypeHierarchyResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.scriptBodyResolver = new ScriptBodyResolver(); this.topDownAnalyzer.setBodyResolver(bodyResolver); this.topDownAnalyzer.setContext(topDownAnalysisContext); @@ -143,35 +143,17 @@ public class InjectorForTopDownAnalyzerForJs { 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); - - declarationResolver.setAnnotationResolver(annotationResolver); - declarationResolver.setContext(topDownAnalysisContext); - declarationResolver.setDescriptorResolver(descriptorResolver); - declarationResolver.setImportsResolver(importsResolver); - declarationResolver.setScriptHeaderResolver(scriptHeaderResolver); - declarationResolver.setTrace(bindingTrace); + bodyResolver.setAnnotationResolver(annotationResolver); + bodyResolver.setCallResolver(callResolver); + bodyResolver.setContext(topDownAnalysisContext); + bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); + bodyResolver.setDeclarationsChecker(declarationsChecker); + bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); + bodyResolver.setExpressionTypingServices(expressionTypingServices); + bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); + bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); + bodyResolver.setTopDownAnalysisParameters(topDownAnalysisParameters); + bodyResolver.setTrace(bindingTrace); annotationResolver.setCallResolver(callResolver); annotationResolver.setExpressionTypingServices(expressionTypingServices); @@ -194,12 +176,38 @@ public class InjectorForTopDownAnalyzerForJs { 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.setModuleDescriptor(moduleDescriptor); typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver); 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.setImportsFactory(jetImportsFactory); importsResolver.setModuleDescriptor(moduleDescriptor); @@ -228,20 +236,16 @@ public class InjectorForTopDownAnalyzerForJs { typeHierarchyResolver.setScriptHeaderResolver(scriptHeaderResolver); typeHierarchyResolver.setTrace(bindingTrace); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - functionAnalyzerExtension.setTrace(bindingTrace); - - scriptBodyResolver.setContext(topDownAnalysisContext); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - scriptBodyResolver.setTrace(bindingTrace); - } @PreDestroy public void destroy() { } + public ModuleDescriptorImpl getModuleDescriptor() { + return this.moduleDescriptor; + } + public TopDownAnalyzer getTopDownAnalyzer() { return this.topDownAnalyzer; } @@ -250,32 +254,4 @@ public class InjectorForTopDownAnalyzerForJs { 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; - } - }