From 65c6adfaa4859fde1dcecf8970a5f76e35171112 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 24 Jun 2015 17:32:59 +0300 Subject: [PATCH] Drop "injector-generator" module, tests and existing generated injectors Move GeneratorsFileUtil to "generators" module Drop "Generate Injectors" run configuration --- .idea/artifacts/InjectorGenerator.xml | 9 - .idea/modules.xml | 1 - .../runConfigurations/Generate_Injectors.xml | 23 - TeamCityBuild.xml | 1 - .../di/InjectorForLazyResolveWithJava.java | 341 -------------- .../kotlin/di/InjectorForReplWithJava.java | 430 ------------------ .../di/InjectorForTopDownAnalyzerForJvm.java | 429 ----------------- .../kotlin/di/InjectorForBodyResolve.java | 247 ---------- .../kotlin/di/InjectorForLazyBodyResolve.java | 306 ------------- ...njectorForLazyLocalClassifierAnalyzer.java | 302 ------------ .../kotlin/di/InjectorForLazyResolve.java | 254 ----------- .../kotlin/di/InjectorForMacros.java | 213 --------- .../jetbrains/kotlin/di/InjectorForTests.java | 225 --------- .../InjectorForRuntimeDescriptorLoader.java | 117 ----- generators/generators.iml | 1 - .../injector-generator/injector-generator.iml | 17 - .../kotlin/generators/di/ConstructorCall.java | 76 ---- .../kotlin/generators/di/Dependencies.java | 303 ------------ .../di/DependencyInjectorGenerator.java | 359 --------------- .../kotlin/generators/di/DiType.java | 131 ------ .../kotlin/generators/di/Expression.java | 33 -- .../kotlin/generators/di/FactoryMethod.java | 48 -- .../jetbrains/kotlin/generators/di/Field.java | 155 ------- .../kotlin/generators/di/GetSingleton.java | 66 --- .../kotlin/generators/di/GivenExpression.java | 81 ---- .../kotlin/generators/di/ImportManager.java | 69 --- .../di/InjectionLogicGenerator.java | 131 ------ .../generators/di/InjectorGeneratorFacade.kt | 62 --- .../generators/di/InjectorGeneratorUtil.java | 70 --- .../kotlin/generators/di/InstantiateType.java | 57 --- .../di/InstantiationFailedException.java | 23 - .../kotlin/generators/di/MethodCall.kt | 32 -- .../kotlin/generators/di/Parameter.java | 68 --- .../generators/di/ParameterExpression.java | 57 --- .../generators/di/SetterDependency.java | 46 -- .../evaluate/GenerateOperationsMap.kt | 9 +- .../frontend/GenerateKeywordStrings.java | 2 +- .../generators/injectors/GenerateInjectors.kt | 288 ------------ .../tests/generateTestDataForReservedWords.kt | 4 +- .../tests/generator/TestGenerator.java | 2 +- .../generators/util}/GeneratorsFileUtil.java | 2 +- .../injectors/GenerateInjectorsTest.java | 54 --- .../di/InjectorForTopDownAnalyzerForJs.java | 335 -------------- 43 files changed, 9 insertions(+), 5470 deletions(-) delete mode 100644 .idea/artifacts/InjectorGenerator.xml delete mode 100644 .idea/runConfigurations/Generate_Injectors.xml delete mode 100644 compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java delete mode 100644 compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java delete mode 100644 compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java delete mode 100644 compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForBodyResolve.java delete mode 100644 compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyBodyResolve.java delete mode 100644 compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyLocalClassifierAnalyzer.java delete mode 100644 compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyResolve.java delete mode 100644 compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForMacros.java delete mode 100644 compiler/tests/org/jetbrains/kotlin/di/InjectorForTests.java delete mode 100644 core/descriptors.runtime/src/org/jetbrains/kotlin/di/InjectorForRuntimeDescriptorLoader.java delete mode 100644 generators/injector-generator/injector-generator.iml delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ConstructorCall.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Dependencies.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/DependencyInjectorGenerator.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/DiType.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Expression.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/FactoryMethod.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Field.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GetSingleton.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GivenExpression.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ImportManager.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectionLogicGenerator.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectorGeneratorFacade.kt delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectorGeneratorUtil.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InstantiateType.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InstantiationFailedException.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/MethodCall.kt delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Parameter.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ParameterExpression.java delete mode 100644 generators/injector-generator/src/org/jetbrains/kotlin/generators/di/SetterDependency.java delete mode 100644 generators/src/org/jetbrains/kotlin/generators/injectors/GenerateInjectors.kt rename generators/{injector-generator/src/org/jetbrains/kotlin/generators/di => src/org/jetbrains/kotlin/generators/util}/GeneratorsFileUtil.java (98%) delete mode 100644 generators/tests/org/jetbrains/kotlin/generators/injectors/GenerateInjectorsTest.java delete mode 100644 js/js.frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJs.java diff --git a/.idea/artifacts/InjectorGenerator.xml b/.idea/artifacts/InjectorGenerator.xml deleted file mode 100644 index c5d01c89714..00000000000 --- a/.idea/artifacts/InjectorGenerator.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - $PROJECT_DIR$/out/artifacts/internal/ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index 058cfbe2787..21e53538f25 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -37,7 +37,6 @@ - diff --git a/.idea/runConfigurations/Generate_Injectors.xml b/.idea/runConfigurations/Generate_Injectors.xml deleted file mode 100644 index a3bdc71e48c..00000000000 --- a/.idea/runConfigurations/Generate_Injectors.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - \ No newline at end of file diff --git a/TeamCityBuild.xml b/TeamCityBuild.xml index 29392d4a832..e112baa27fa 100644 --- a/TeamCityBuild.xml +++ b/TeamCityBuild.xml @@ -201,7 +201,6 @@ - diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java deleted file mode 100644 index 0e703be7c4a..00000000000 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java +++ /dev/null @@ -1,341 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import org.jetbrains.kotlin.context.ModuleContext; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory; -import org.jetbrains.kotlin.resolve.lazy.ResolveSession; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider; -import com.intellij.psi.search.GlobalSearchScope; -import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver; -import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver; -import org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinder; -import org.jetbrains.kotlin.load.java.JavaClassFinderImpl; -import org.jetbrains.kotlin.load.java.components.TraceBasedExternalSignatureResolver; -import org.jetbrains.kotlin.load.java.components.LazyResolveBasedCache; -import org.jetbrains.kotlin.load.java.components.TraceBasedErrorReporter; -import org.jetbrains.kotlin.load.java.components.PsiBasedExternalAnnotationResolver; -import org.jetbrains.kotlin.load.java.structure.impl.JavaPropertyInitializerEvaluatorImpl; -import org.jetbrains.kotlin.load.java.sam.SamConversionResolverImpl; -import org.jetbrains.kotlin.load.java.components.JavaSourceElementFactoryImpl; -import org.jetbrains.kotlin.load.java.JavaFlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.context.LazyResolveToken; -import org.jetbrains.kotlin.resolve.jvm.JavaLazyAnalyzerPostConstruct; -import org.jetbrains.kotlin.load.kotlin.KotlinJvmCheckerProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.types.DynamicTypesSettings; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.psi.JetImportsFactory; -import org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver; -import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProviderImpl; -import org.jetbrains.kotlin.resolve.ScriptBodyResolver; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider.AdditionalFileScopeProvider; -import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider; -import org.jetbrains.kotlin.load.java.lazy.GlobalJavaResolverContext; -import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver; -import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava; -import org.jetbrains.kotlin.load.kotlin.JavaClassDataFinder; -import org.jetbrains.kotlin.load.kotlin.BinaryClassAnnotationAndConstantLoaderImpl; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForLazyResolveWithJava { - - private final ModuleContext moduleContext; - private final KotlinBuiltIns kotlinBuiltIns; - private final ModuleDescriptor moduleDescriptor; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final Project project; - private final StorageManager storageManager; - private final BindingTrace bindingTrace; - private final DeclarationProviderFactory declarationProviderFactory; - private final ResolveSession resolveSession; - private final ScopeProvider scopeProvider; - private final GlobalSearchScope moduleContentScope; - private final ModuleClassResolver moduleClassResolver; - private final JavaDescriptorResolver javaDescriptorResolver; - private final JvmVirtualFileFinder jvmVirtualFileFinder; - private final JavaClassFinderImpl javaClassFinder; - private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver; - private final LazyResolveBasedCache lazyResolveBasedCache; - private final TraceBasedErrorReporter traceBasedErrorReporter; - private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver; - private final JavaPropertyInitializerEvaluatorImpl javaPropertyInitializerEvaluator; - private final SamConversionResolverImpl samConversionResolver; - private final JavaSourceElementFactoryImpl javaSourceElementFactory; - private final JavaFlexibleTypeCapabilitiesProvider javaFlexibleTypeCapabilitiesProvider; - private final LazyResolveToken lazyResolveToken; - private final JavaLazyAnalyzerPostConstruct javaLazyAnalyzerPostConstruct; - private final KotlinJvmCheckerProvider kotlinJvmCheckerProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final AnnotationResolver annotationResolver; - private final CallResolver callResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final ExpressionTypingServices expressionTypingServices; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final DescriptorResolver descriptorResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final TypeResolver typeResolver; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final DynamicTypesSettings dynamicTypesSettings; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final FakeCallResolver fakeCallResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final StatementFilter statementFilter; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final JetImportsFactory jetImportsFactory; - private final LazyDeclarationResolver lazyDeclarationResolver; - private final DeclarationScopeProviderImpl declarationScopeProvider; - private final ScriptBodyResolver scriptBodyResolver; - private final AdditionalFileScopeProvider additionalFileScopeProvider; - private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; - private final GlobalJavaResolverContext globalJavaResolverContext; - private final DeserializedDescriptorResolver deserializedDescriptorResolver; - private final DeserializationComponentsForJava deserializationComponentsForJava; - private final JavaClassDataFinder javaClassDataFinder; - private final BinaryClassAnnotationAndConstantLoaderImpl binaryClassAnnotationAndConstantLoader; - - public InjectorForLazyResolveWithJava( - @NotNull ModuleContext moduleContext, - @NotNull BindingTrace bindingTrace, - @NotNull DeclarationProviderFactory declarationProviderFactory, - @NotNull GlobalSearchScope moduleContentScope, - @NotNull ModuleClassResolver moduleClassResolver - ) { - this.moduleContext = moduleContext; - this.kotlinBuiltIns = moduleContext.getBuiltIns(); - this.moduleDescriptor = moduleContext.getModule(); - this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); - this.project = moduleContext.getProject(); - this.storageManager = moduleContext.getStorageManager(); - this.bindingTrace = bindingTrace; - this.declarationProviderFactory = declarationProviderFactory; - this.resolveSession = new ResolveSession(project, getModuleContext(), moduleDescriptor, declarationProviderFactory, bindingTrace); - this.scopeProvider = new ScopeProvider(getResolveSession()); - this.moduleContentScope = moduleContentScope; - this.moduleClassResolver = moduleClassResolver; - this.javaClassFinder = new JavaClassFinderImpl(); - this.jvmVirtualFileFinder = org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinderFactory.SERVICE.getInstance(project).create(moduleContentScope); - this.traceBasedErrorReporter = new TraceBasedErrorReporter(); - this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(traceBasedErrorReporter); - this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver(); - this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver(); - this.lazyResolveBasedCache = new LazyResolveBasedCache(); - this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl(); - this.samConversionResolver = SamConversionResolverImpl.INSTANCE$; - this.javaSourceElementFactory = new JavaSourceElementFactoryImpl(); - this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, jvmVirtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, moduleClassResolver); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, moduleDescriptor, reflectionTypes); - this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, moduleDescriptor); - this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider(); - this.lazyResolveToken = new LazyResolveToken(); - this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct(); - this.kotlinJvmCheckerProvider = KotlinJvmCheckerProvider.INSTANCE$; - this.symbolUsageValidator = kotlinJvmCheckerProvider.getSymbolUsageValidator(); - this.annotationResolver = new AnnotationResolver(); - this.callResolver = new CallResolver(); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); - this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); - this.descriptorResolver = new DescriptorResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.dynamicTypesSettings = new DynamicTypesSettings(); - this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, javaFlexibleTypeCapabilitiesProvider, storageManager, lazyResolveToken, dynamicTypesSettings); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.fakeCallResolver = new FakeCallResolver(project, callResolver); - this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); - this.valueParameterResolver = new ValueParameterResolver(kotlinJvmCheckerProvider, expressionTypingServices); - this.statementFilter = new StatementFilter(); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - this.jetImportsFactory = new JetImportsFactory(); - this.lazyDeclarationResolver = new LazyDeclarationResolver(getModuleContext(), bindingTrace); - this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver); - this.scriptBodyResolver = new ScriptBodyResolver(); - this.additionalFileScopeProvider = new AdditionalFileScopeProvider(); - this.javaClassDataFinder = new JavaClassDataFinder(jvmVirtualFileFinder, deserializedDescriptorResolver); - this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(moduleDescriptor, storageManager, jvmVirtualFileFinder, traceBasedErrorReporter); - this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, moduleDescriptor, javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider); - - this.resolveSession.setAnnotationResolve(annotationResolver); - this.resolveSession.setDescriptorResolver(descriptorResolver); - this.resolveSession.setFunctionDescriptorResolver(functionDescriptorResolver); - this.resolveSession.setJetImportFactory(jetImportsFactory); - this.resolveSession.setLazyDeclarationResolver(lazyDeclarationResolver); - this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); - this.resolveSession.setScopeProvider(scopeProvider); - this.resolveSession.setScriptBodyResolver(scriptBodyResolver); - this.resolveSession.setTypeResolver(typeResolver); - - scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider); - scopeProvider.setDeclarationScopeProvider(declarationScopeProvider); - - javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct); - javaClassFinder.setProject(project); - javaClassFinder.setScope(moduleContentScope); - - traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); - traceBasedExternalSignatureResolver.setProject(project); - traceBasedExternalSignatureResolver.setTrace(bindingTrace); - - lazyResolveBasedCache.setSession(resolveSession); - - traceBasedErrorReporter.setTrace(bindingTrace); - - javaLazyAnalyzerPostConstruct.setCodeAnalyzer(resolveSession); - javaLazyAnalyzerPostConstruct.setProject(project); - javaLazyAnalyzerPostConstruct.setTrace(bindingTrace); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - callResolver.setArgumentTypeResolver(argumentTypeResolver); - callResolver.setCallCompleter(callCompleter); - callResolver.setCandidateResolver(candidateResolver); - callResolver.setExpressionTypingServices(expressionTypingServices); - callResolver.setTaskPrioritizer(taskPrioritizer); - callResolver.setTypeResolver(typeResolver); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - expressionTypingServices.setStatementFilter(statementFilter); - - expressionTypingComponents.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - expressionTypingComponents.setAnnotationResolver(annotationResolver); - expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - expressionTypingComponents.setCallResolver(callResolver); - expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - expressionTypingComponents.setDescriptorResolver(descriptorResolver); - expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); - expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - expressionTypingComponents.setGlobalContext(moduleContext); - expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - expressionTypingComponents.setReflectionTypes(reflectionTypes); - expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - expressionTypingComponents.setTypeResolver(typeResolver); - expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - descriptorResolver.setAnnotationResolver(annotationResolver); - descriptorResolver.setBuiltIns(kotlinBuiltIns); - descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - descriptorResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setStorageManager(storageManager); - descriptorResolver.setTypeResolver(typeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - jetImportsFactory.setProject(project); - - lazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProvider); - lazyDeclarationResolver.setTopLevelDescriptorProvider(resolveSession); - - declarationScopeProvider.setFileScopeProvider(scopeProvider); - - scriptBodyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - - deserializedDescriptorResolver.setComponents(deserializationComponentsForJava); - - javaClassFinder.initialize(); - - javaLazyAnalyzerPostConstruct.postCreate(); - - } - - @PreDestroy - public void destroy() { - } - - public ModuleContext getModuleContext() { - return this.moduleContext; - } - - public ResolveSession getResolveSession() { - return this.resolveSession; - } - - public JavaDescriptorResolver getJavaDescriptorResolver() { - return this.javaDescriptorResolver; - } - -} diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java deleted file mode 100644 index 399289b0476..00000000000 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForReplWithJava.java +++ /dev/null @@ -1,430 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import org.jetbrains.kotlin.context.ModuleContext; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory; -import org.jetbrains.kotlin.resolve.lazy.ResolveSession; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider; -import com.intellij.psi.search.GlobalSearchScope; -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer; -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel; -import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver; -import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava; -import org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinder; -import org.jetbrains.kotlin.load.java.JavaClassFinderImpl; -import org.jetbrains.kotlin.load.java.components.TraceBasedExternalSignatureResolver; -import org.jetbrains.kotlin.load.java.components.LazyResolveBasedCache; -import org.jetbrains.kotlin.load.java.components.TraceBasedErrorReporter; -import org.jetbrains.kotlin.load.java.components.PsiBasedExternalAnnotationResolver; -import org.jetbrains.kotlin.load.java.structure.impl.JavaPropertyInitializerEvaluatorImpl; -import org.jetbrains.kotlin.load.java.sam.SamConversionResolverImpl; -import org.jetbrains.kotlin.load.java.components.JavaSourceElementFactoryImpl; -import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver; -import org.jetbrains.kotlin.resolve.jvm.JavaLazyAnalyzerPostConstruct; -import org.jetbrains.kotlin.load.java.JavaFlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.load.kotlin.KotlinJvmCheckerProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider.AdditionalFileScopeProvider; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.context.TypeLazinessToken; -import org.jetbrains.kotlin.types.DynamicTypesSettings; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.psi.JetImportsFactory; -import org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver; -import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProviderImpl; -import org.jetbrains.kotlin.resolve.ScriptBodyResolver; -import org.jetbrains.kotlin.resolve.BodyResolver; -import org.jetbrains.kotlin.resolve.ControlFlowAnalyzer; -import org.jetbrains.kotlin.resolve.DeclarationsChecker; -import org.jetbrains.kotlin.resolve.ModifiersChecker; -import org.jetbrains.kotlin.resolve.FunctionAnalyzerExtension; -import org.jetbrains.kotlin.resolve.DeclarationResolver; -import org.jetbrains.kotlin.resolve.OverloadResolver; -import org.jetbrains.kotlin.resolve.OverrideResolver; -import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker; -import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider; -import org.jetbrains.kotlin.load.java.lazy.GlobalJavaResolverContext; -import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver; -import org.jetbrains.kotlin.load.kotlin.JavaClassDataFinder; -import org.jetbrains.kotlin.load.kotlin.BinaryClassAnnotationAndConstantLoaderImpl; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForReplWithJava { - - private final ModuleContext moduleContext; - private final KotlinBuiltIns kotlinBuiltIns; - private final ModuleDescriptor moduleDescriptor; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final Project project; - private final StorageManager storageManager; - private final BindingTrace bindingTrace; - private final DeclarationProviderFactory declarationProviderFactory; - private final ResolveSession resolveSession; - private final ScopeProvider scopeProvider; - private final GlobalSearchScope moduleContentScope; - private final LazyTopDownAnalyzer lazyTopDownAnalyzer; - private final LazyTopDownAnalyzerForTopLevel lazyTopDownAnalyzerForTopLevel; - private final JavaDescriptorResolver javaDescriptorResolver; - private final DeserializationComponentsForJava deserializationComponentsForJava; - private final JvmVirtualFileFinder jvmVirtualFileFinder; - private final JavaClassFinderImpl javaClassFinder; - private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver; - private final LazyResolveBasedCache lazyResolveBasedCache; - private final TraceBasedErrorReporter traceBasedErrorReporter; - private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver; - private final JavaPropertyInitializerEvaluatorImpl javaPropertyInitializerEvaluator; - private final SamConversionResolverImpl samConversionResolver; - private final JavaSourceElementFactoryImpl javaSourceElementFactory; - private final SingleModuleClassResolver singleModuleClassResolver; - private final JavaLazyAnalyzerPostConstruct javaLazyAnalyzerPostConstruct; - private final JavaFlexibleTypeCapabilitiesProvider javaFlexibleTypeCapabilitiesProvider; - private final KotlinJvmCheckerProvider kotlinJvmCheckerProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final AdditionalFileScopeProvider additionalFileScopeProvider; - private final AnnotationResolver annotationResolver; - private final CallResolver callResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final ExpressionTypingServices expressionTypingServices; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final DescriptorResolver descriptorResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final TypeResolver typeResolver; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final TypeLazinessToken typeLazinessToken; - private final DynamicTypesSettings dynamicTypesSettings; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final FakeCallResolver fakeCallResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final StatementFilter statementFilter; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final JetImportsFactory jetImportsFactory; - private final LazyDeclarationResolver lazyDeclarationResolver; - private final DeclarationScopeProviderImpl declarationScopeProvider; - private final ScriptBodyResolver scriptBodyResolver; - private final BodyResolver bodyResolver; - private final ControlFlowAnalyzer controlFlowAnalyzer; - private final DeclarationsChecker declarationsChecker; - private final ModifiersChecker modifiersChecker; - private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final DeclarationResolver declarationResolver; - private final OverloadResolver overloadResolver; - private final OverrideResolver overrideResolver; - private final VarianceChecker varianceChecker; - private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; - private final GlobalJavaResolverContext globalJavaResolverContext; - private final DeserializedDescriptorResolver deserializedDescriptorResolver; - private final JavaClassDataFinder javaClassDataFinder; - private final BinaryClassAnnotationAndConstantLoaderImpl binaryClassAnnotationAndConstantLoader; - - public InjectorForReplWithJava( - @NotNull ModuleContext moduleContext, - @NotNull BindingTrace bindingTrace, - @NotNull DeclarationProviderFactory declarationProviderFactory, - @NotNull GlobalSearchScope moduleContentScope, - @NotNull AdditionalFileScopeProvider additionalFileScopeProvider - ) { - this.moduleContext = moduleContext; - this.kotlinBuiltIns = moduleContext.getBuiltIns(); - this.moduleDescriptor = moduleContext.getModule(); - this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); - this.project = moduleContext.getProject(); - this.storageManager = moduleContext.getStorageManager(); - this.bindingTrace = bindingTrace; - this.declarationProviderFactory = declarationProviderFactory; - this.resolveSession = new ResolveSession(project, getModuleContext(), moduleDescriptor, declarationProviderFactory, bindingTrace); - this.scopeProvider = new ScopeProvider(getResolveSession()); - this.moduleContentScope = moduleContentScope; - this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); - this.lazyTopDownAnalyzerForTopLevel = new LazyTopDownAnalyzerForTopLevel(); - this.javaClassFinder = new JavaClassFinderImpl(); - this.jvmVirtualFileFinder = org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinderFactory.SERVICE.getInstance(project).create(moduleContentScope); - this.traceBasedErrorReporter = new TraceBasedErrorReporter(); - this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(traceBasedErrorReporter); - this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver(); - this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver(); - this.lazyResolveBasedCache = new LazyResolveBasedCache(); - this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl(); - this.samConversionResolver = SamConversionResolverImpl.INSTANCE$; - this.javaSourceElementFactory = new JavaSourceElementFactoryImpl(); - this.singleModuleClassResolver = new SingleModuleClassResolver(); - this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, jvmVirtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, singleModuleClassResolver); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, moduleDescriptor, reflectionTypes); - this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, moduleDescriptor); - this.javaClassDataFinder = new JavaClassDataFinder(jvmVirtualFileFinder, deserializedDescriptorResolver); - this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(moduleDescriptor, storageManager, jvmVirtualFileFinder, traceBasedErrorReporter); - this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, moduleDescriptor, javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider); - this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct(); - this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider(); - this.kotlinJvmCheckerProvider = KotlinJvmCheckerProvider.INSTANCE$; - this.symbolUsageValidator = kotlinJvmCheckerProvider.getSymbolUsageValidator(); - this.additionalFileScopeProvider = additionalFileScopeProvider; - this.annotationResolver = new AnnotationResolver(); - this.callResolver = new CallResolver(); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); - this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); - this.descriptorResolver = new DescriptorResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.typeLazinessToken = new TypeLazinessToken(); - this.dynamicTypesSettings = new DynamicTypesSettings(); - this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, javaFlexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.fakeCallResolver = new FakeCallResolver(project, callResolver); - this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); - this.valueParameterResolver = new ValueParameterResolver(kotlinJvmCheckerProvider, expressionTypingServices); - this.statementFilter = new StatementFilter(); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - this.jetImportsFactory = new JetImportsFactory(); - this.lazyDeclarationResolver = new LazyDeclarationResolver(getModuleContext(), bindingTrace); - this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver); - this.scriptBodyResolver = new ScriptBodyResolver(); - this.bodyResolver = new BodyResolver(); - this.controlFlowAnalyzer = new ControlFlowAnalyzer(); - this.declarationsChecker = new DeclarationsChecker(); - this.modifiersChecker = new ModifiersChecker(bindingTrace, kotlinJvmCheckerProvider); - this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.declarationResolver = new DeclarationResolver(); - this.overloadResolver = new OverloadResolver(); - this.overrideResolver = new OverrideResolver(); - this.varianceChecker = new VarianceChecker(bindingTrace); - - this.resolveSession.setAnnotationResolve(annotationResolver); - this.resolveSession.setDescriptorResolver(descriptorResolver); - this.resolveSession.setFunctionDescriptorResolver(functionDescriptorResolver); - this.resolveSession.setJetImportFactory(jetImportsFactory); - this.resolveSession.setLazyDeclarationResolver(lazyDeclarationResolver); - this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); - this.resolveSession.setScopeProvider(scopeProvider); - this.resolveSession.setScriptBodyResolver(scriptBodyResolver); - this.resolveSession.setTypeResolver(typeResolver); - - scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider); - scopeProvider.setDeclarationScopeProvider(declarationScopeProvider); - - this.lazyTopDownAnalyzer.setBodyResolver(bodyResolver); - this.lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver); - this.lazyTopDownAnalyzer.setDeclarationScopeProvider(declarationScopeProvider); - this.lazyTopDownAnalyzer.setFileScopeProvider(scopeProvider); - this.lazyTopDownAnalyzer.setLazyDeclarationResolver(lazyDeclarationResolver); - this.lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor); - this.lazyTopDownAnalyzer.setOverloadResolver(overloadResolver); - this.lazyTopDownAnalyzer.setOverrideResolver(overrideResolver); - this.lazyTopDownAnalyzer.setTopLevelDescriptorProvider(resolveSession); - this.lazyTopDownAnalyzer.setTrace(bindingTrace); - this.lazyTopDownAnalyzer.setVarianceChecker(varianceChecker); - - this.lazyTopDownAnalyzerForTopLevel.setKotlinCodeAnalyzer(resolveSession); - this.lazyTopDownAnalyzerForTopLevel.setLazyTopDownAnalyzer(lazyTopDownAnalyzer); - - javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct); - javaClassFinder.setProject(project); - javaClassFinder.setScope(moduleContentScope); - - traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); - traceBasedExternalSignatureResolver.setProject(project); - traceBasedExternalSignatureResolver.setTrace(bindingTrace); - - lazyResolveBasedCache.setSession(resolveSession); - - traceBasedErrorReporter.setTrace(bindingTrace); - - singleModuleClassResolver.setResolver(javaDescriptorResolver); - - javaLazyAnalyzerPostConstruct.setCodeAnalyzer(resolveSession); - javaLazyAnalyzerPostConstruct.setProject(project); - javaLazyAnalyzerPostConstruct.setTrace(bindingTrace); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - callResolver.setArgumentTypeResolver(argumentTypeResolver); - callResolver.setCallCompleter(callCompleter); - callResolver.setCandidateResolver(candidateResolver); - callResolver.setExpressionTypingServices(expressionTypingServices); - callResolver.setTaskPrioritizer(taskPrioritizer); - callResolver.setTypeResolver(typeResolver); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - expressionTypingServices.setStatementFilter(statementFilter); - - expressionTypingComponents.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - expressionTypingComponents.setAnnotationResolver(annotationResolver); - expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - expressionTypingComponents.setCallResolver(callResolver); - expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - expressionTypingComponents.setDescriptorResolver(descriptorResolver); - expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); - expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - expressionTypingComponents.setGlobalContext(moduleContext); - expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - expressionTypingComponents.setReflectionTypes(reflectionTypes); - expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - expressionTypingComponents.setTypeResolver(typeResolver); - expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - descriptorResolver.setAnnotationResolver(annotationResolver); - descriptorResolver.setBuiltIns(kotlinBuiltIns); - descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - descriptorResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setStorageManager(storageManager); - descriptorResolver.setTypeResolver(typeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - jetImportsFactory.setProject(project); - - lazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProvider); - lazyDeclarationResolver.setTopLevelDescriptorProvider(resolveSession); - - declarationScopeProvider.setFileScopeProvider(scopeProvider); - - scriptBodyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - - bodyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - bodyResolver.setAnnotationResolver(annotationResolver); - bodyResolver.setCallResolver(callResolver); - bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); - bodyResolver.setDeclarationsChecker(declarationsChecker); - bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - bodyResolver.setExpressionTypingServices(expressionTypingServices); - bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); - bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); - bodyResolver.setTrace(bindingTrace); - bodyResolver.setValueParameterResolver(valueParameterResolver); - - controlFlowAnalyzer.setTrace(bindingTrace); - - declarationsChecker.setDescriptorResolver(descriptorResolver); - declarationsChecker.setModifiersChecker(modifiersChecker); - declarationsChecker.setTrace(bindingTrace); - - functionAnalyzerExtension.setTrace(bindingTrace); - - declarationResolver.setAnnotationResolver(annotationResolver); - declarationResolver.setTrace(bindingTrace); - - overloadResolver.setTrace(bindingTrace); - - overrideResolver.setTrace(bindingTrace); - - deserializedDescriptorResolver.setComponents(deserializationComponentsForJava); - - javaClassFinder.initialize(); - - javaLazyAnalyzerPostConstruct.postCreate(); - - } - - @PreDestroy - public void destroy() { - } - - public ModuleContext getModuleContext() { - return this.moduleContext; - } - - public ResolveSession getResolveSession() { - return this.resolveSession; - } - - public LazyTopDownAnalyzer getLazyTopDownAnalyzer() { - return this.lazyTopDownAnalyzer; - } - - public LazyTopDownAnalyzerForTopLevel getLazyTopDownAnalyzerForTopLevel() { - return this.lazyTopDownAnalyzerForTopLevel; - } - - public JavaDescriptorResolver getJavaDescriptorResolver() { - return this.javaDescriptorResolver; - } - - public DeserializationComponentsForJava getDeserializationComponentsForJava() { - return this.deserializationComponentsForJava; - } - -} diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java deleted file mode 100644 index 70c33ba7a82..00000000000 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJvm.java +++ /dev/null @@ -1,429 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import org.jetbrains.kotlin.context.ModuleContext; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory; -import org.jetbrains.kotlin.resolve.lazy.ResolveSession; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider; -import com.intellij.psi.search.GlobalSearchScope; -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer; -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel; -import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver; -import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava; -import org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinder; -import org.jetbrains.kotlin.load.java.JavaClassFinderImpl; -import org.jetbrains.kotlin.load.java.components.TraceBasedExternalSignatureResolver; -import org.jetbrains.kotlin.load.java.components.LazyResolveBasedCache; -import org.jetbrains.kotlin.load.java.components.TraceBasedErrorReporter; -import org.jetbrains.kotlin.load.java.components.PsiBasedExternalAnnotationResolver; -import org.jetbrains.kotlin.load.java.structure.impl.JavaPropertyInitializerEvaluatorImpl; -import org.jetbrains.kotlin.load.java.sam.SamConversionResolverImpl; -import org.jetbrains.kotlin.load.java.components.JavaSourceElementFactoryImpl; -import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver; -import org.jetbrains.kotlin.resolve.jvm.JavaLazyAnalyzerPostConstruct; -import org.jetbrains.kotlin.load.java.JavaFlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.load.kotlin.KotlinJvmCheckerProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.context.TypeLazinessToken; -import org.jetbrains.kotlin.types.DynamicTypesSettings; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.psi.JetImportsFactory; -import org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver; -import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProviderImpl; -import org.jetbrains.kotlin.resolve.ScriptBodyResolver; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider.AdditionalFileScopeProvider; -import org.jetbrains.kotlin.resolve.BodyResolver; -import org.jetbrains.kotlin.resolve.ControlFlowAnalyzer; -import org.jetbrains.kotlin.resolve.DeclarationsChecker; -import org.jetbrains.kotlin.resolve.ModifiersChecker; -import org.jetbrains.kotlin.resolve.FunctionAnalyzerExtension; -import org.jetbrains.kotlin.resolve.DeclarationResolver; -import org.jetbrains.kotlin.resolve.OverloadResolver; -import org.jetbrains.kotlin.resolve.OverrideResolver; -import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker; -import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider; -import org.jetbrains.kotlin.load.java.lazy.GlobalJavaResolverContext; -import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver; -import org.jetbrains.kotlin.load.kotlin.JavaClassDataFinder; -import org.jetbrains.kotlin.load.kotlin.BinaryClassAnnotationAndConstantLoaderImpl; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForTopDownAnalyzerForJvm { - - private final ModuleContext moduleContext; - private final KotlinBuiltIns kotlinBuiltIns; - private final ModuleDescriptor moduleDescriptor; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final Project project; - private final StorageManager storageManager; - private final BindingTrace bindingTrace; - private final DeclarationProviderFactory declarationProviderFactory; - private final ResolveSession resolveSession; - private final ScopeProvider scopeProvider; - private final GlobalSearchScope moduleContentScope; - private final LazyTopDownAnalyzer lazyTopDownAnalyzer; - private final LazyTopDownAnalyzerForTopLevel lazyTopDownAnalyzerForTopLevel; - private final JavaDescriptorResolver javaDescriptorResolver; - private final DeserializationComponentsForJava deserializationComponentsForJava; - private final JvmVirtualFileFinder jvmVirtualFileFinder; - private final JavaClassFinderImpl javaClassFinder; - private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver; - private final LazyResolveBasedCache lazyResolveBasedCache; - private final TraceBasedErrorReporter traceBasedErrorReporter; - private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver; - private final JavaPropertyInitializerEvaluatorImpl javaPropertyInitializerEvaluator; - private final SamConversionResolverImpl samConversionResolver; - private final JavaSourceElementFactoryImpl javaSourceElementFactory; - private final SingleModuleClassResolver singleModuleClassResolver; - private final JavaLazyAnalyzerPostConstruct javaLazyAnalyzerPostConstruct; - private final JavaFlexibleTypeCapabilitiesProvider javaFlexibleTypeCapabilitiesProvider; - private final KotlinJvmCheckerProvider kotlinJvmCheckerProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final AnnotationResolver annotationResolver; - private final CallResolver callResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final ExpressionTypingServices expressionTypingServices; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final DescriptorResolver descriptorResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final TypeResolver typeResolver; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final TypeLazinessToken typeLazinessToken; - private final DynamicTypesSettings dynamicTypesSettings; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final FakeCallResolver fakeCallResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final StatementFilter statementFilter; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final JetImportsFactory jetImportsFactory; - private final LazyDeclarationResolver lazyDeclarationResolver; - private final DeclarationScopeProviderImpl declarationScopeProvider; - private final ScriptBodyResolver scriptBodyResolver; - private final AdditionalFileScopeProvider additionalFileScopeProvider; - private final BodyResolver bodyResolver; - private final ControlFlowAnalyzer controlFlowAnalyzer; - private final DeclarationsChecker declarationsChecker; - private final ModifiersChecker modifiersChecker; - private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final DeclarationResolver declarationResolver; - private final OverloadResolver overloadResolver; - private final OverrideResolver overrideResolver; - private final VarianceChecker varianceChecker; - private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; - private final GlobalJavaResolverContext globalJavaResolverContext; - private final DeserializedDescriptorResolver deserializedDescriptorResolver; - private final JavaClassDataFinder javaClassDataFinder; - private final BinaryClassAnnotationAndConstantLoaderImpl binaryClassAnnotationAndConstantLoader; - - public InjectorForTopDownAnalyzerForJvm( - @NotNull ModuleContext moduleContext, - @NotNull BindingTrace bindingTrace, - @NotNull DeclarationProviderFactory declarationProviderFactory, - @NotNull GlobalSearchScope moduleContentScope - ) { - this.moduleContext = moduleContext; - this.kotlinBuiltIns = moduleContext.getBuiltIns(); - this.moduleDescriptor = moduleContext.getModule(); - this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); - this.project = moduleContext.getProject(); - this.storageManager = moduleContext.getStorageManager(); - this.bindingTrace = bindingTrace; - this.declarationProviderFactory = declarationProviderFactory; - this.resolveSession = new ResolveSession(project, getModuleContext(), moduleDescriptor, declarationProviderFactory, bindingTrace); - this.scopeProvider = new ScopeProvider(getResolveSession()); - this.moduleContentScope = moduleContentScope; - this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); - this.lazyTopDownAnalyzerForTopLevel = new LazyTopDownAnalyzerForTopLevel(); - this.javaClassFinder = new JavaClassFinderImpl(); - this.jvmVirtualFileFinder = org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinderFactory.SERVICE.getInstance(project).create(moduleContentScope); - this.traceBasedErrorReporter = new TraceBasedErrorReporter(); - this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(traceBasedErrorReporter); - this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver(); - this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver(); - this.lazyResolveBasedCache = new LazyResolveBasedCache(); - this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl(); - this.samConversionResolver = SamConversionResolverImpl.INSTANCE$; - this.javaSourceElementFactory = new JavaSourceElementFactoryImpl(); - this.singleModuleClassResolver = new SingleModuleClassResolver(); - this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, jvmVirtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, singleModuleClassResolver); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, moduleDescriptor, reflectionTypes); - this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, moduleDescriptor); - this.javaClassDataFinder = new JavaClassDataFinder(jvmVirtualFileFinder, deserializedDescriptorResolver); - this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(moduleDescriptor, storageManager, jvmVirtualFileFinder, traceBasedErrorReporter); - this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, moduleDescriptor, javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider); - this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct(); - this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider(); - this.kotlinJvmCheckerProvider = KotlinJvmCheckerProvider.INSTANCE$; - this.symbolUsageValidator = kotlinJvmCheckerProvider.getSymbolUsageValidator(); - this.annotationResolver = new AnnotationResolver(); - this.callResolver = new CallResolver(); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); - this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); - this.descriptorResolver = new DescriptorResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.typeLazinessToken = new TypeLazinessToken(); - this.dynamicTypesSettings = new DynamicTypesSettings(); - this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, javaFlexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.fakeCallResolver = new FakeCallResolver(project, callResolver); - this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); - this.valueParameterResolver = new ValueParameterResolver(kotlinJvmCheckerProvider, expressionTypingServices); - this.statementFilter = new StatementFilter(); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - this.jetImportsFactory = new JetImportsFactory(); - this.lazyDeclarationResolver = new LazyDeclarationResolver(getModuleContext(), bindingTrace); - this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver); - this.scriptBodyResolver = new ScriptBodyResolver(); - this.additionalFileScopeProvider = new AdditionalFileScopeProvider(); - this.bodyResolver = new BodyResolver(); - this.controlFlowAnalyzer = new ControlFlowAnalyzer(); - this.declarationsChecker = new DeclarationsChecker(); - this.modifiersChecker = new ModifiersChecker(bindingTrace, kotlinJvmCheckerProvider); - this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.declarationResolver = new DeclarationResolver(); - this.overloadResolver = new OverloadResolver(); - this.overrideResolver = new OverrideResolver(); - this.varianceChecker = new VarianceChecker(bindingTrace); - - this.resolveSession.setAnnotationResolve(annotationResolver); - this.resolveSession.setDescriptorResolver(descriptorResolver); - this.resolveSession.setFunctionDescriptorResolver(functionDescriptorResolver); - this.resolveSession.setJetImportFactory(jetImportsFactory); - this.resolveSession.setLazyDeclarationResolver(lazyDeclarationResolver); - this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); - this.resolveSession.setScopeProvider(scopeProvider); - this.resolveSession.setScriptBodyResolver(scriptBodyResolver); - this.resolveSession.setTypeResolver(typeResolver); - - scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider); - scopeProvider.setDeclarationScopeProvider(declarationScopeProvider); - - this.lazyTopDownAnalyzer.setBodyResolver(bodyResolver); - this.lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver); - this.lazyTopDownAnalyzer.setDeclarationScopeProvider(declarationScopeProvider); - this.lazyTopDownAnalyzer.setFileScopeProvider(scopeProvider); - this.lazyTopDownAnalyzer.setLazyDeclarationResolver(lazyDeclarationResolver); - this.lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor); - this.lazyTopDownAnalyzer.setOverloadResolver(overloadResolver); - this.lazyTopDownAnalyzer.setOverrideResolver(overrideResolver); - this.lazyTopDownAnalyzer.setTopLevelDescriptorProvider(resolveSession); - this.lazyTopDownAnalyzer.setTrace(bindingTrace); - this.lazyTopDownAnalyzer.setVarianceChecker(varianceChecker); - - this.lazyTopDownAnalyzerForTopLevel.setKotlinCodeAnalyzer(resolveSession); - this.lazyTopDownAnalyzerForTopLevel.setLazyTopDownAnalyzer(lazyTopDownAnalyzer); - - javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct); - javaClassFinder.setProject(project); - javaClassFinder.setScope(moduleContentScope); - - traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); - traceBasedExternalSignatureResolver.setProject(project); - traceBasedExternalSignatureResolver.setTrace(bindingTrace); - - lazyResolveBasedCache.setSession(resolveSession); - - traceBasedErrorReporter.setTrace(bindingTrace); - - singleModuleClassResolver.setResolver(javaDescriptorResolver); - - javaLazyAnalyzerPostConstruct.setCodeAnalyzer(resolveSession); - javaLazyAnalyzerPostConstruct.setProject(project); - javaLazyAnalyzerPostConstruct.setTrace(bindingTrace); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - callResolver.setArgumentTypeResolver(argumentTypeResolver); - callResolver.setCallCompleter(callCompleter); - callResolver.setCandidateResolver(candidateResolver); - callResolver.setExpressionTypingServices(expressionTypingServices); - callResolver.setTaskPrioritizer(taskPrioritizer); - callResolver.setTypeResolver(typeResolver); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - expressionTypingServices.setStatementFilter(statementFilter); - - expressionTypingComponents.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - expressionTypingComponents.setAnnotationResolver(annotationResolver); - expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - expressionTypingComponents.setCallResolver(callResolver); - expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - expressionTypingComponents.setDescriptorResolver(descriptorResolver); - expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); - expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - expressionTypingComponents.setGlobalContext(moduleContext); - expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - expressionTypingComponents.setReflectionTypes(reflectionTypes); - expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - expressionTypingComponents.setTypeResolver(typeResolver); - expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - descriptorResolver.setAnnotationResolver(annotationResolver); - descriptorResolver.setBuiltIns(kotlinBuiltIns); - descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - descriptorResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setStorageManager(storageManager); - descriptorResolver.setTypeResolver(typeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - jetImportsFactory.setProject(project); - - lazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProvider); - lazyDeclarationResolver.setTopLevelDescriptorProvider(resolveSession); - - declarationScopeProvider.setFileScopeProvider(scopeProvider); - - scriptBodyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - - bodyResolver.setAdditionalCheckerProvider(kotlinJvmCheckerProvider); - bodyResolver.setAnnotationResolver(annotationResolver); - bodyResolver.setCallResolver(callResolver); - bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); - bodyResolver.setDeclarationsChecker(declarationsChecker); - bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - bodyResolver.setExpressionTypingServices(expressionTypingServices); - bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); - bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); - bodyResolver.setTrace(bindingTrace); - bodyResolver.setValueParameterResolver(valueParameterResolver); - - controlFlowAnalyzer.setTrace(bindingTrace); - - declarationsChecker.setDescriptorResolver(descriptorResolver); - declarationsChecker.setModifiersChecker(modifiersChecker); - declarationsChecker.setTrace(bindingTrace); - - functionAnalyzerExtension.setTrace(bindingTrace); - - declarationResolver.setAnnotationResolver(annotationResolver); - declarationResolver.setTrace(bindingTrace); - - overloadResolver.setTrace(bindingTrace); - - overrideResolver.setTrace(bindingTrace); - - deserializedDescriptorResolver.setComponents(deserializationComponentsForJava); - - javaClassFinder.initialize(); - - javaLazyAnalyzerPostConstruct.postCreate(); - - } - - @PreDestroy - public void destroy() { - } - - public ModuleContext getModuleContext() { - return this.moduleContext; - } - - public ResolveSession getResolveSession() { - return this.resolveSession; - } - - public LazyTopDownAnalyzer getLazyTopDownAnalyzer() { - return this.lazyTopDownAnalyzer; - } - - public LazyTopDownAnalyzerForTopLevel getLazyTopDownAnalyzerForTopLevel() { - return this.lazyTopDownAnalyzerForTopLevel; - } - - public JavaDescriptorResolver getJavaDescriptorResolver() { - return this.javaDescriptorResolver; - } - - public DeserializationComponentsForJava getDeserializationComponentsForJava() { - return this.deserializationComponentsForJava; - } - -} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForBodyResolve.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForBodyResolve.java deleted file mode 100644 index 2d810c50049..00000000000 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForBodyResolve.java +++ /dev/null @@ -1,247 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import org.jetbrains.kotlin.context.ModuleContext; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.kotlin.resolve.BodyResolver; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.context.TypeLazinessToken; -import org.jetbrains.kotlin.types.DynamicTypesSettings; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.resolve.ControlFlowAnalyzer; -import org.jetbrains.kotlin.resolve.DeclarationsChecker; -import org.jetbrains.kotlin.resolve.ModifiersChecker; -import org.jetbrains.kotlin.resolve.FunctionAnalyzerExtension; -import org.jetbrains.kotlin.resolve.ScriptBodyResolver; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForBodyResolve { - - private final ModuleContext moduleContext; - private final KotlinBuiltIns kotlinBuiltIns; - private final ModuleDescriptor moduleDescriptor; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final Project project; - private final StorageManager storageManager; - private final BindingTrace bindingTrace; - private final AdditionalCheckerProvider additionalCheckerProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final StatementFilter statementFilter; - private final BodyResolver bodyResolver; - private final AnnotationResolver annotationResolver; - private final CallResolver callResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final ExpressionTypingServices expressionTypingServices; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final DescriptorResolver descriptorResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final TypeResolver typeResolver; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; - private final TypeLazinessToken typeLazinessToken; - private final DynamicTypesSettings dynamicTypesSettings; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final FakeCallResolver fakeCallResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final ControlFlowAnalyzer controlFlowAnalyzer; - private final DeclarationsChecker declarationsChecker; - private final ModifiersChecker modifiersChecker; - private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final ScriptBodyResolver scriptBodyResolver; - - public InjectorForBodyResolve( - @NotNull ModuleContext moduleContext, - @NotNull BindingTrace bindingTrace, - @NotNull AdditionalCheckerProvider additionalCheckerProvider, - @NotNull StatementFilter statementFilter - ) { - this.moduleContext = moduleContext; - this.kotlinBuiltIns = moduleContext.getBuiltIns(); - this.moduleDescriptor = moduleContext.getModule(); - this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); - this.project = moduleContext.getProject(); - this.storageManager = moduleContext.getStorageManager(); - this.bindingTrace = bindingTrace; - this.additionalCheckerProvider = additionalCheckerProvider; - this.symbolUsageValidator = additionalCheckerProvider.getSymbolUsageValidator(); - this.statementFilter = statementFilter; - this.bodyResolver = new BodyResolver(); - this.annotationResolver = new AnnotationResolver(); - this.callResolver = new CallResolver(); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); - this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); - this.descriptorResolver = new DescriptorResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); - this.typeLazinessToken = new TypeLazinessToken(); - this.dynamicTypesSettings = new DynamicTypesSettings(); - this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.fakeCallResolver = new FakeCallResolver(project, callResolver); - this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.valueParameterResolver = new ValueParameterResolver(additionalCheckerProvider, expressionTypingServices); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - this.controlFlowAnalyzer = new ControlFlowAnalyzer(); - this.declarationsChecker = new DeclarationsChecker(); - this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); - this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.scriptBodyResolver = new ScriptBodyResolver(); - - this.bodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - this.bodyResolver.setAnnotationResolver(annotationResolver); - this.bodyResolver.setCallResolver(callResolver); - 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.setTrace(bindingTrace); - this.bodyResolver.setValueParameterResolver(valueParameterResolver); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - callResolver.setArgumentTypeResolver(argumentTypeResolver); - callResolver.setCallCompleter(callCompleter); - callResolver.setCandidateResolver(candidateResolver); - callResolver.setExpressionTypingServices(expressionTypingServices); - callResolver.setTaskPrioritizer(taskPrioritizer); - callResolver.setTypeResolver(typeResolver); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - expressionTypingServices.setStatementFilter(statementFilter); - - expressionTypingComponents.setAdditionalCheckerProvider(additionalCheckerProvider); - expressionTypingComponents.setAnnotationResolver(annotationResolver); - expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - expressionTypingComponents.setCallResolver(callResolver); - expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - expressionTypingComponents.setDescriptorResolver(descriptorResolver); - expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); - expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - expressionTypingComponents.setGlobalContext(moduleContext); - expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - expressionTypingComponents.setReflectionTypes(reflectionTypes); - expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - expressionTypingComponents.setTypeResolver(typeResolver); - expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - descriptorResolver.setAnnotationResolver(annotationResolver); - descriptorResolver.setBuiltIns(kotlinBuiltIns); - descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - descriptorResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setStorageManager(storageManager); - descriptorResolver.setTypeResolver(typeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - controlFlowAnalyzer.setTrace(bindingTrace); - - declarationsChecker.setDescriptorResolver(descriptorResolver); - declarationsChecker.setModifiersChecker(modifiersChecker); - declarationsChecker.setTrace(bindingTrace); - - functionAnalyzerExtension.setTrace(bindingTrace); - - scriptBodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - - } - - @PreDestroy - public void destroy() { - } - - public BodyResolver getBodyResolver() { - return this.bodyResolver; - } - -} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyBodyResolve.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyBodyResolve.java deleted file mode 100644 index 180fbc77c1a..00000000000 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyBodyResolve.java +++ /dev/null @@ -1,306 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import org.jetbrains.kotlin.context.ModuleContext; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer; -import org.jetbrains.kotlin.resolve.lazy.FileScopeProvider; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.types.DynamicTypesSettings; -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel; -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer; -import org.jetbrains.kotlin.resolve.BodyResolver; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.context.TypeLazinessToken; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.resolve.ControlFlowAnalyzer; -import org.jetbrains.kotlin.resolve.DeclarationsChecker; -import org.jetbrains.kotlin.resolve.ModifiersChecker; -import org.jetbrains.kotlin.resolve.FunctionAnalyzerExtension; -import org.jetbrains.kotlin.resolve.ScriptBodyResolver; -import org.jetbrains.kotlin.resolve.DeclarationResolver; -import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProviderImpl; -import org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver; -import org.jetbrains.kotlin.resolve.OverloadResolver; -import org.jetbrains.kotlin.resolve.OverrideResolver; -import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForLazyBodyResolve { - - private final ModuleContext moduleContext; - private final KotlinBuiltIns kotlinBuiltIns; - private final ModuleDescriptor moduleDescriptor; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final Project project; - private final StorageManager storageManager; - private final KotlinCodeAnalyzer analyzer; - private final FileScopeProvider fileScopeProvider; - private final BindingTrace bindingTrace; - private final AdditionalCheckerProvider additionalCheckerProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final DynamicTypesSettings dynamicTypesSettings; - private final LazyTopDownAnalyzerForTopLevel lazyTopDownAnalyzerForTopLevel; - private final LazyTopDownAnalyzer lazyTopDownAnalyzer; - private final BodyResolver bodyResolver; - private final AnnotationResolver annotationResolver; - private final CallResolver callResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final ExpressionTypingServices expressionTypingServices; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final DescriptorResolver descriptorResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final TypeResolver typeResolver; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; - private final TypeLazinessToken typeLazinessToken; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final FakeCallResolver fakeCallResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final StatementFilter statementFilter; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final ControlFlowAnalyzer controlFlowAnalyzer; - private final DeclarationsChecker declarationsChecker; - private final ModifiersChecker modifiersChecker; - private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final ScriptBodyResolver scriptBodyResolver; - private final DeclarationResolver declarationResolver; - private final DeclarationScopeProviderImpl declarationScopeProvider; - private final LazyDeclarationResolver lazyDeclarationResolver; - private final OverloadResolver overloadResolver; - private final OverrideResolver overrideResolver; - private final VarianceChecker varianceChecker; - - public InjectorForLazyBodyResolve( - @NotNull ModuleContext moduleContext, - @NotNull KotlinCodeAnalyzer analyzer, - @NotNull FileScopeProvider fileScopeProvider, - @NotNull BindingTrace bindingTrace, - @NotNull AdditionalCheckerProvider additionalCheckerProvider, - @NotNull DynamicTypesSettings dynamicTypesSettings - ) { - this.moduleContext = moduleContext; - this.kotlinBuiltIns = moduleContext.getBuiltIns(); - this.moduleDescriptor = moduleContext.getModule(); - this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); - this.project = moduleContext.getProject(); - this.storageManager = moduleContext.getStorageManager(); - this.analyzer = analyzer; - this.fileScopeProvider = fileScopeProvider; - this.bindingTrace = bindingTrace; - this.additionalCheckerProvider = additionalCheckerProvider; - this.symbolUsageValidator = additionalCheckerProvider.getSymbolUsageValidator(); - this.dynamicTypesSettings = dynamicTypesSettings; - this.lazyTopDownAnalyzerForTopLevel = new LazyTopDownAnalyzerForTopLevel(); - this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); - this.bodyResolver = new BodyResolver(); - this.annotationResolver = new AnnotationResolver(); - this.callResolver = new CallResolver(); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); - this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); - this.descriptorResolver = new DescriptorResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); - this.typeLazinessToken = new TypeLazinessToken(); - this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.fakeCallResolver = new FakeCallResolver(project, callResolver); - this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.valueParameterResolver = new ValueParameterResolver(additionalCheckerProvider, expressionTypingServices); - this.statementFilter = new StatementFilter(); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - this.controlFlowAnalyzer = new ControlFlowAnalyzer(); - this.declarationsChecker = new DeclarationsChecker(); - this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); - this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.scriptBodyResolver = new ScriptBodyResolver(); - this.declarationResolver = new DeclarationResolver(); - this.lazyDeclarationResolver = new LazyDeclarationResolver(moduleContext, bindingTrace); - this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver); - this.overloadResolver = new OverloadResolver(); - this.overrideResolver = new OverrideResolver(); - this.varianceChecker = new VarianceChecker(bindingTrace); - - this.lazyTopDownAnalyzerForTopLevel.setKotlinCodeAnalyzer(analyzer); - this.lazyTopDownAnalyzerForTopLevel.setLazyTopDownAnalyzer(lazyTopDownAnalyzer); - - lazyTopDownAnalyzer.setBodyResolver(bodyResolver); - lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver); - lazyTopDownAnalyzer.setDeclarationScopeProvider(declarationScopeProvider); - lazyTopDownAnalyzer.setFileScopeProvider(fileScopeProvider); - lazyTopDownAnalyzer.setLazyDeclarationResolver(lazyDeclarationResolver); - lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor); - lazyTopDownAnalyzer.setOverloadResolver(overloadResolver); - lazyTopDownAnalyzer.setOverrideResolver(overrideResolver); - lazyTopDownAnalyzer.setTopLevelDescriptorProvider(analyzer); - lazyTopDownAnalyzer.setTrace(bindingTrace); - lazyTopDownAnalyzer.setVarianceChecker(varianceChecker); - - bodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - bodyResolver.setAnnotationResolver(annotationResolver); - bodyResolver.setCallResolver(callResolver); - bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); - bodyResolver.setDeclarationsChecker(declarationsChecker); - bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - bodyResolver.setExpressionTypingServices(expressionTypingServices); - bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); - bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); - bodyResolver.setTrace(bindingTrace); - bodyResolver.setValueParameterResolver(valueParameterResolver); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - callResolver.setArgumentTypeResolver(argumentTypeResolver); - callResolver.setCallCompleter(callCompleter); - callResolver.setCandidateResolver(candidateResolver); - callResolver.setExpressionTypingServices(expressionTypingServices); - callResolver.setTaskPrioritizer(taskPrioritizer); - callResolver.setTypeResolver(typeResolver); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - expressionTypingServices.setStatementFilter(statementFilter); - - expressionTypingComponents.setAdditionalCheckerProvider(additionalCheckerProvider); - expressionTypingComponents.setAnnotationResolver(annotationResolver); - expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - expressionTypingComponents.setCallResolver(callResolver); - expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - expressionTypingComponents.setDescriptorResolver(descriptorResolver); - expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); - expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - expressionTypingComponents.setGlobalContext(moduleContext); - expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - expressionTypingComponents.setReflectionTypes(reflectionTypes); - expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - expressionTypingComponents.setTypeResolver(typeResolver); - expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - descriptorResolver.setAnnotationResolver(annotationResolver); - descriptorResolver.setBuiltIns(kotlinBuiltIns); - descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - descriptorResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setStorageManager(storageManager); - descriptorResolver.setTypeResolver(typeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - controlFlowAnalyzer.setTrace(bindingTrace); - - declarationsChecker.setDescriptorResolver(descriptorResolver); - declarationsChecker.setModifiersChecker(modifiersChecker); - declarationsChecker.setTrace(bindingTrace); - - functionAnalyzerExtension.setTrace(bindingTrace); - - scriptBodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - - declarationResolver.setAnnotationResolver(annotationResolver); - declarationResolver.setTrace(bindingTrace); - - declarationScopeProvider.setFileScopeProvider(fileScopeProvider); - - lazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProvider); - lazyDeclarationResolver.setTopLevelDescriptorProvider(analyzer); - - overloadResolver.setTrace(bindingTrace); - - overrideResolver.setTrace(bindingTrace); - - } - - @PreDestroy - public void destroy() { - } - - public LazyTopDownAnalyzerForTopLevel getLazyTopDownAnalyzerForTopLevel() { - return this.lazyTopDownAnalyzerForTopLevel; - } - -} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyLocalClassifierAnalyzer.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyLocalClassifierAnalyzer.java deleted file mode 100644 index 308c1176b7e..00000000000 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyLocalClassifierAnalyzer.java +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import org.jetbrains.kotlin.context.ModuleContext; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.types.DynamicTypesSettings; -import org.jetbrains.kotlin.types.expressions.LocalClassDescriptorHolder; -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer; -import org.jetbrains.kotlin.resolve.lazy.NoTopLevelDescriptorProvider; -import org.jetbrains.kotlin.resolve.lazy.NoFileScopeProvider; -import org.jetbrains.kotlin.types.expressions.DeclarationScopeProviderForLocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.LocalLazyDeclarationResolver; -import org.jetbrains.kotlin.resolve.BodyResolver; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.context.TypeLazinessToken; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.resolve.ControlFlowAnalyzer; -import org.jetbrains.kotlin.resolve.DeclarationsChecker; -import org.jetbrains.kotlin.resolve.ModifiersChecker; -import org.jetbrains.kotlin.resolve.FunctionAnalyzerExtension; -import org.jetbrains.kotlin.resolve.ScriptBodyResolver; -import org.jetbrains.kotlin.resolve.DeclarationResolver; -import org.jetbrains.kotlin.resolve.OverloadResolver; -import org.jetbrains.kotlin.resolve.OverrideResolver; -import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForLazyLocalClassifierAnalyzer { - - private final ModuleContext moduleContext; - private final KotlinBuiltIns kotlinBuiltIns; - private final ModuleDescriptor moduleDescriptor; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final Project project; - private final StorageManager storageManager; - private final BindingTrace bindingTrace; - private final AdditionalCheckerProvider additionalCheckerProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final DynamicTypesSettings dynamicTypesSettings; - private final LocalClassDescriptorHolder localClassDescriptorHolder; - private final LazyTopDownAnalyzer lazyTopDownAnalyzer; - private final NoTopLevelDescriptorProvider noTopLevelDescriptorProvider; - private final NoFileScopeProvider noFileScopeProvider; - private final DeclarationScopeProviderForLocalClassifierAnalyzer declarationScopeProviderForLocalClassifierAnalyzer; - private final LocalLazyDeclarationResolver localLazyDeclarationResolver; - private final BodyResolver bodyResolver; - private final AnnotationResolver annotationResolver; - private final CallResolver callResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final ExpressionTypingServices expressionTypingServices; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final DescriptorResolver descriptorResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final TypeResolver typeResolver; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; - private final TypeLazinessToken typeLazinessToken; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final FakeCallResolver fakeCallResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final StatementFilter statementFilter; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final ControlFlowAnalyzer controlFlowAnalyzer; - private final DeclarationsChecker declarationsChecker; - private final ModifiersChecker modifiersChecker; - private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final ScriptBodyResolver scriptBodyResolver; - private final DeclarationResolver declarationResolver; - private final OverloadResolver overloadResolver; - private final OverrideResolver overrideResolver; - private final VarianceChecker varianceChecker; - - public InjectorForLazyLocalClassifierAnalyzer( - @NotNull ModuleContext moduleContext, - @NotNull BindingTrace bindingTrace, - @NotNull AdditionalCheckerProvider additionalCheckerProvider, - @NotNull DynamicTypesSettings dynamicTypesSettings, - @NotNull LocalClassDescriptorHolder localClassDescriptorHolder - ) { - this.moduleContext = moduleContext; - this.kotlinBuiltIns = moduleContext.getBuiltIns(); - this.moduleDescriptor = moduleContext.getModule(); - this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); - this.project = moduleContext.getProject(); - this.storageManager = moduleContext.getStorageManager(); - this.bindingTrace = bindingTrace; - this.additionalCheckerProvider = additionalCheckerProvider; - this.symbolUsageValidator = additionalCheckerProvider.getSymbolUsageValidator(); - this.dynamicTypesSettings = dynamicTypesSettings; - this.localClassDescriptorHolder = localClassDescriptorHolder; - this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); - this.noTopLevelDescriptorProvider = NoTopLevelDescriptorProvider.INSTANCE$; - this.noFileScopeProvider = NoFileScopeProvider.INSTANCE$; - this.localLazyDeclarationResolver = new LocalLazyDeclarationResolver(moduleContext, bindingTrace, localClassDescriptorHolder); - this.declarationScopeProviderForLocalClassifierAnalyzer = new DeclarationScopeProviderForLocalClassifierAnalyzer(localLazyDeclarationResolver, localClassDescriptorHolder); - this.bodyResolver = new BodyResolver(); - this.annotationResolver = new AnnotationResolver(); - this.callResolver = new CallResolver(); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); - this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); - this.descriptorResolver = new DescriptorResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); - this.typeLazinessToken = new TypeLazinessToken(); - this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.fakeCallResolver = new FakeCallResolver(project, callResolver); - this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.valueParameterResolver = new ValueParameterResolver(additionalCheckerProvider, expressionTypingServices); - this.statementFilter = new StatementFilter(); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - this.controlFlowAnalyzer = new ControlFlowAnalyzer(); - this.declarationsChecker = new DeclarationsChecker(); - this.modifiersChecker = new ModifiersChecker(bindingTrace, additionalCheckerProvider); - this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.scriptBodyResolver = new ScriptBodyResolver(); - this.declarationResolver = new DeclarationResolver(); - this.overloadResolver = new OverloadResolver(); - this.overrideResolver = new OverrideResolver(); - this.varianceChecker = new VarianceChecker(bindingTrace); - - this.lazyTopDownAnalyzer.setBodyResolver(bodyResolver); - this.lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver); - this.lazyTopDownAnalyzer.setDeclarationScopeProvider(declarationScopeProviderForLocalClassifierAnalyzer); - this.lazyTopDownAnalyzer.setFileScopeProvider(noFileScopeProvider); - this.lazyTopDownAnalyzer.setLazyDeclarationResolver(localLazyDeclarationResolver); - this.lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor); - this.lazyTopDownAnalyzer.setOverloadResolver(overloadResolver); - this.lazyTopDownAnalyzer.setOverrideResolver(overrideResolver); - this.lazyTopDownAnalyzer.setTopLevelDescriptorProvider(noTopLevelDescriptorProvider); - this.lazyTopDownAnalyzer.setTrace(bindingTrace); - this.lazyTopDownAnalyzer.setVarianceChecker(varianceChecker); - - declarationScopeProviderForLocalClassifierAnalyzer.setFileScopeProvider(noFileScopeProvider); - - localLazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProviderForLocalClassifierAnalyzer); - localLazyDeclarationResolver.setTopLevelDescriptorProvider(noTopLevelDescriptorProvider); - - bodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - bodyResolver.setAnnotationResolver(annotationResolver); - bodyResolver.setCallResolver(callResolver); - bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); - bodyResolver.setDeclarationsChecker(declarationsChecker); - bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - bodyResolver.setExpressionTypingServices(expressionTypingServices); - bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); - bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); - bodyResolver.setTrace(bindingTrace); - bodyResolver.setValueParameterResolver(valueParameterResolver); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - callResolver.setArgumentTypeResolver(argumentTypeResolver); - callResolver.setCallCompleter(callCompleter); - callResolver.setCandidateResolver(candidateResolver); - callResolver.setExpressionTypingServices(expressionTypingServices); - callResolver.setTaskPrioritizer(taskPrioritizer); - callResolver.setTypeResolver(typeResolver); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - expressionTypingServices.setStatementFilter(statementFilter); - - expressionTypingComponents.setAdditionalCheckerProvider(additionalCheckerProvider); - expressionTypingComponents.setAnnotationResolver(annotationResolver); - expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - expressionTypingComponents.setCallResolver(callResolver); - expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - expressionTypingComponents.setDescriptorResolver(descriptorResolver); - expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); - expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - expressionTypingComponents.setGlobalContext(moduleContext); - expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - expressionTypingComponents.setReflectionTypes(reflectionTypes); - expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - expressionTypingComponents.setTypeResolver(typeResolver); - expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - descriptorResolver.setAnnotationResolver(annotationResolver); - descriptorResolver.setBuiltIns(kotlinBuiltIns); - descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - descriptorResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setStorageManager(storageManager); - descriptorResolver.setTypeResolver(typeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - controlFlowAnalyzer.setTrace(bindingTrace); - - declarationsChecker.setDescriptorResolver(descriptorResolver); - declarationsChecker.setModifiersChecker(modifiersChecker); - declarationsChecker.setTrace(bindingTrace); - - functionAnalyzerExtension.setTrace(bindingTrace); - - scriptBodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - - declarationResolver.setAnnotationResolver(annotationResolver); - declarationResolver.setTrace(bindingTrace); - - overloadResolver.setTrace(bindingTrace); - - overrideResolver.setTrace(bindingTrace); - - } - - @PreDestroy - public void destroy() { - } - - public LazyTopDownAnalyzer getLazyTopDownAnalyzer() { - return this.lazyTopDownAnalyzer; - } - -} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyResolve.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyResolve.java deleted file mode 100644 index 83c0aaf2c8b..00000000000 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForLazyResolve.java +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import org.jetbrains.kotlin.context.ModuleContext; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.types.DynamicTypesSettings; -import org.jetbrains.kotlin.resolve.lazy.ResolveSession; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider; -import org.jetbrains.kotlin.context.LazyResolveToken; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.psi.JetImportsFactory; -import org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver; -import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProviderImpl; -import org.jetbrains.kotlin.resolve.ScriptBodyResolver; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider.AdditionalFileScopeProvider; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForLazyResolve { - - private final ModuleContext moduleContext; - private final KotlinBuiltIns kotlinBuiltIns; - private final ModuleDescriptor moduleDescriptor; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final Project project; - private final StorageManager storageManager; - private final DeclarationProviderFactory declarationProviderFactory; - private final BindingTrace bindingTrace; - private final AdditionalCheckerProvider additionalCheckerProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final DynamicTypesSettings dynamicTypesSettings; - private final ResolveSession resolveSession; - private final ScopeProvider scopeProvider; - private final LazyResolveToken lazyResolveToken; - private final AnnotationResolver annotationResolver; - private final CallResolver callResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final ExpressionTypingServices expressionTypingServices; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final DescriptorResolver descriptorResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final TypeResolver typeResolver; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final FakeCallResolver fakeCallResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final StatementFilter statementFilter; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final JetImportsFactory jetImportsFactory; - private final LazyDeclarationResolver lazyDeclarationResolver; - private final DeclarationScopeProviderImpl declarationScopeProvider; - private final ScriptBodyResolver scriptBodyResolver; - private final AdditionalFileScopeProvider additionalFileScopeProvider; - - public InjectorForLazyResolve( - @NotNull ModuleContext moduleContext, - @NotNull DeclarationProviderFactory declarationProviderFactory, - @NotNull BindingTrace bindingTrace, - @NotNull AdditionalCheckerProvider additionalCheckerProvider, - @NotNull DynamicTypesSettings dynamicTypesSettings - ) { - this.moduleContext = moduleContext; - this.kotlinBuiltIns = moduleContext.getBuiltIns(); - this.moduleDescriptor = moduleContext.getModule(); - this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); - this.project = moduleContext.getProject(); - this.storageManager = moduleContext.getStorageManager(); - this.declarationProviderFactory = declarationProviderFactory; - this.bindingTrace = bindingTrace; - this.additionalCheckerProvider = additionalCheckerProvider; - this.symbolUsageValidator = additionalCheckerProvider.getSymbolUsageValidator(); - this.dynamicTypesSettings = dynamicTypesSettings; - this.resolveSession = new ResolveSession(project, moduleContext, moduleDescriptor, declarationProviderFactory, bindingTrace); - this.scopeProvider = new ScopeProvider(getResolveSession()); - this.lazyResolveToken = new LazyResolveToken(); - this.annotationResolver = new AnnotationResolver(); - this.callResolver = new CallResolver(); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); - this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); - this.descriptorResolver = new DescriptorResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); - this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, lazyResolveToken, dynamicTypesSettings); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.fakeCallResolver = new FakeCallResolver(project, callResolver); - this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.valueParameterResolver = new ValueParameterResolver(additionalCheckerProvider, expressionTypingServices); - this.statementFilter = new StatementFilter(); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - this.jetImportsFactory = new JetImportsFactory(); - this.lazyDeclarationResolver = new LazyDeclarationResolver(moduleContext, bindingTrace); - this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver); - this.scriptBodyResolver = new ScriptBodyResolver(); - this.additionalFileScopeProvider = new AdditionalFileScopeProvider(); - - this.resolveSession.setAnnotationResolve(annotationResolver); - this.resolveSession.setDescriptorResolver(descriptorResolver); - this.resolveSession.setFunctionDescriptorResolver(functionDescriptorResolver); - this.resolveSession.setJetImportFactory(jetImportsFactory); - this.resolveSession.setLazyDeclarationResolver(lazyDeclarationResolver); - this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); - this.resolveSession.setScopeProvider(scopeProvider); - this.resolveSession.setScriptBodyResolver(scriptBodyResolver); - this.resolveSession.setTypeResolver(typeResolver); - - scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider); - scopeProvider.setDeclarationScopeProvider(declarationScopeProvider); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - callResolver.setArgumentTypeResolver(argumentTypeResolver); - callResolver.setCallCompleter(callCompleter); - callResolver.setCandidateResolver(candidateResolver); - callResolver.setExpressionTypingServices(expressionTypingServices); - callResolver.setTaskPrioritizer(taskPrioritizer); - callResolver.setTypeResolver(typeResolver); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - expressionTypingServices.setStatementFilter(statementFilter); - - expressionTypingComponents.setAdditionalCheckerProvider(additionalCheckerProvider); - expressionTypingComponents.setAnnotationResolver(annotationResolver); - expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - expressionTypingComponents.setCallResolver(callResolver); - expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - expressionTypingComponents.setDescriptorResolver(descriptorResolver); - expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); - expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - expressionTypingComponents.setGlobalContext(moduleContext); - expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - expressionTypingComponents.setReflectionTypes(reflectionTypes); - expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - expressionTypingComponents.setTypeResolver(typeResolver); - expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - descriptorResolver.setAnnotationResolver(annotationResolver); - descriptorResolver.setBuiltIns(kotlinBuiltIns); - descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - descriptorResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setStorageManager(storageManager); - descriptorResolver.setTypeResolver(typeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - jetImportsFactory.setProject(project); - - lazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProvider); - lazyDeclarationResolver.setTopLevelDescriptorProvider(resolveSession); - - declarationScopeProvider.setFileScopeProvider(scopeProvider); - - scriptBodyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - - } - - @PreDestroy - public void destroy() { - } - - public ResolveSession getResolveSession() { - return this.resolveSession; - } - -} diff --git a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForMacros.java b/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForMacros.java deleted file mode 100644 index e93b5f356e0..00000000000 --- a/compiler/frontend/src/org/jetbrains/kotlin/di/InjectorForMacros.java +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.context.GlobalContext; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider.DefaultProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.types.DynamicTypesSettings; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.context.TypeLazinessToken; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForMacros { - - private final Project project; - private final ModuleDescriptor moduleDescriptor; - private final KotlinBuiltIns kotlinBuiltIns; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final ExpressionTypingServices expressionTypingServices; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallResolver callResolver; - private final TypeResolver typeResolver; - private final GlobalContext globalContext; - private final StorageManager storageManager; - private final DefaultProvider defaultProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final StatementFilter statementFilter; - private final AnnotationResolver annotationResolver; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final DescriptorResolver descriptorResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final DynamicTypesSettings dynamicTypesSettings; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final FakeCallResolver fakeCallResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; - private final TypeLazinessToken typeLazinessToken; - - public InjectorForMacros( - @NotNull Project project, - @NotNull ModuleDescriptor moduleDescriptor - ) { - this.project = project; - this.moduleDescriptor = moduleDescriptor; - this.kotlinBuiltIns = moduleDescriptor.getBuiltIns(); - this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(getExpressionTypingComponents()); - this.callResolver = new CallResolver(); - this.annotationResolver = new AnnotationResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); - this.globalContext = org.jetbrains.kotlin.context.ContextPackage.GlobalContext(); - this.storageManager = globalContext.getStorageManager(); - this.typeLazinessToken = new TypeLazinessToken(); - this.dynamicTypesSettings = new DynamicTypesSettings(); - this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); - this.defaultProvider = DefaultProvider.INSTANCE$; - this.symbolUsageValidator = defaultProvider.getSymbolUsageValidator(); - this.statementFilter = new StatementFilter(); - this.callExpressionResolver = new CallExpressionResolver(getCallResolver(), kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(getCallResolver()); - this.descriptorResolver = new DescriptorResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.fakeCallResolver = new FakeCallResolver(project, getCallResolver()); - this.functionDescriptorResolver = new FunctionDescriptorResolver(getTypeResolver(), descriptorResolver, annotationResolver, storageManager, getExpressionTypingServices(), kotlinBuiltIns); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, getTypeResolver(), annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, getTypeResolver(), symbolUsageValidator); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.valueParameterResolver = new ValueParameterResolver(defaultProvider, getExpressionTypingServices()); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - - this.expressionTypingServices.setStatementFilter(statementFilter); - - this.expressionTypingComponents.setAdditionalCheckerProvider(defaultProvider); - this.expressionTypingComponents.setAnnotationResolver(annotationResolver); - this.expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - this.expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - this.expressionTypingComponents.setCallResolver(callResolver); - this.expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - this.expressionTypingComponents.setDescriptorResolver(descriptorResolver); - this.expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); - this.expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - this.expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - this.expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - this.expressionTypingComponents.setGlobalContext(globalContext); - this.expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - this.expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - this.expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - this.expressionTypingComponents.setReflectionTypes(reflectionTypes); - this.expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - this.expressionTypingComponents.setTypeResolver(typeResolver); - this.expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - this.callResolver.setAdditionalCheckerProvider(defaultProvider); - this.callResolver.setArgumentTypeResolver(argumentTypeResolver); - this.callResolver.setCallCompleter(callCompleter); - this.callResolver.setCandidateResolver(candidateResolver); - this.callResolver.setExpressionTypingServices(expressionTypingServices); - this.callResolver.setTaskPrioritizer(taskPrioritizer); - this.callResolver.setTypeResolver(typeResolver); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - descriptorResolver.setAnnotationResolver(annotationResolver); - descriptorResolver.setBuiltIns(kotlinBuiltIns); - descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - descriptorResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setStorageManager(storageManager); - descriptorResolver.setTypeResolver(typeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(defaultProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - } - - @PreDestroy - public void destroy() { - } - - public ExpressionTypingServices getExpressionTypingServices() { - return this.expressionTypingServices; - } - - public ExpressionTypingComponents getExpressionTypingComponents() { - return this.expressionTypingComponents; - } - - public CallResolver getCallResolver() { - return this.callResolver; - } - - public TypeResolver getTypeResolver() { - return this.typeResolver; - } - -} diff --git a/compiler/tests/org/jetbrains/kotlin/di/InjectorForTests.java b/compiler/tests/org/jetbrains/kotlin/di/InjectorForTests.java deleted file mode 100644 index dba802011a4..00000000000 --- a/compiler/tests/org/jetbrains/kotlin/di/InjectorForTests.java +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.load.kotlin.KotlinJvmCheckerProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.context.GlobalContext; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.context.TypeLazinessToken; -import org.jetbrains.kotlin.types.DynamicTypesSettings; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForTests { - - private final Project project; - private final ModuleDescriptor moduleDescriptor; - private final KotlinBuiltIns kotlinBuiltIns; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final DescriptorResolver descriptorResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final TypeResolver typeResolver; - private final FakeCallResolver fakeCallResolver; - private final KotlinJvmCheckerProvider additionalCheckerProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final ExpressionTypingServices expressionTypingServices; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final GlobalContext globalContext; - private final StorageManager storageManager; - private final AnnotationResolver annotationResolver; - private final CallResolver callResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; - private final TypeLazinessToken typeLazinessToken; - private final DynamicTypesSettings dynamicTypesSettings; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final StatementFilter statementFilter; - - public InjectorForTests( - @NotNull Project project, - @NotNull ModuleDescriptor moduleDescriptor - ) { - this.project = project; - this.moduleDescriptor = moduleDescriptor; - this.kotlinBuiltIns = moduleDescriptor.getBuiltIns(); - this.platformToKotlinClassMap = moduleDescriptor.getPlatformToKotlinClassMap(); - this.descriptorResolver = new DescriptorResolver(); - this.annotationResolver = new AnnotationResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); - this.globalContext = org.jetbrains.kotlin.context.ContextPackage.GlobalContext(); - this.storageManager = globalContext.getStorageManager(); - this.typeLazinessToken = new TypeLazinessToken(); - this.dynamicTypesSettings = new DynamicTypesSettings(); - this.typeResolver = new TypeResolver(annotationResolver, getQualifiedExpressionResolver(), moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesSettings); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); - this.functionDescriptorResolver = new FunctionDescriptorResolver(getTypeResolver(), getDescriptorResolver(), annotationResolver, storageManager, getExpressionTypingServices(), kotlinBuiltIns); - this.callResolver = new CallResolver(); - this.fakeCallResolver = new FakeCallResolver(project, callResolver); - this.additionalCheckerProvider = KotlinJvmCheckerProvider.INSTANCE$; - this.symbolUsageValidator = additionalCheckerProvider.getSymbolUsageValidator(); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(getDescriptorResolver(), getFunctionDescriptorResolver(), getTypeResolver(), annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(getFakeCallResolver(), getDescriptorResolver(), getTypeResolver(), symbolUsageValidator); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.valueParameterResolver = new ValueParameterResolver(getAdditionalCheckerProvider(), getExpressionTypingServices()); - this.statementFilter = new StatementFilter(); - - this.descriptorResolver.setAnnotationResolver(annotationResolver); - this.descriptorResolver.setBuiltIns(kotlinBuiltIns); - this.descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - this.descriptorResolver.setExpressionTypingServices(expressionTypingServices); - this.descriptorResolver.setStorageManager(storageManager); - this.descriptorResolver.setTypeResolver(typeResolver); - - this.expressionTypingServices.setStatementFilter(statementFilter); - - this.qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - callResolver.setArgumentTypeResolver(argumentTypeResolver); - callResolver.setCallCompleter(callCompleter); - callResolver.setCandidateResolver(candidateResolver); - callResolver.setExpressionTypingServices(expressionTypingServices); - callResolver.setTaskPrioritizer(taskPrioritizer); - callResolver.setTypeResolver(typeResolver); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(additionalCheckerProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - expressionTypingComponents.setAdditionalCheckerProvider(additionalCheckerProvider); - expressionTypingComponents.setAnnotationResolver(annotationResolver); - expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - expressionTypingComponents.setCallResolver(callResolver); - expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - expressionTypingComponents.setDescriptorResolver(descriptorResolver); - expressionTypingComponents.setDynamicTypesSettings(dynamicTypesSettings); - expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - expressionTypingComponents.setGlobalContext(globalContext); - expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - expressionTypingComponents.setReflectionTypes(reflectionTypes); - expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - expressionTypingComponents.setTypeResolver(typeResolver); - expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - } - - @PreDestroy - public void destroy() { - } - - public DescriptorResolver getDescriptorResolver() { - return this.descriptorResolver; - } - - public FunctionDescriptorResolver getFunctionDescriptorResolver() { - return this.functionDescriptorResolver; - } - - public TypeResolver getTypeResolver() { - return this.typeResolver; - } - - public FakeCallResolver getFakeCallResolver() { - return this.fakeCallResolver; - } - - public KotlinJvmCheckerProvider getAdditionalCheckerProvider() { - return this.additionalCheckerProvider; - } - - public ExpressionTypingServices getExpressionTypingServices() { - return this.expressionTypingServices; - } - - public QualifiedExpressionResolver getQualifiedExpressionResolver() { - return this.qualifiedExpressionResolver; - } - -} diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/di/InjectorForRuntimeDescriptorLoader.java b/core/descriptors.runtime/src/org/jetbrains/kotlin/di/InjectorForRuntimeDescriptorLoader.java deleted file mode 100644 index 7d085cae3f7..00000000000 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/di/InjectorForRuntimeDescriptorLoader.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver; -import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava; -import org.jetbrains.kotlin.load.java.components.ExternalSignatureResolver; -import org.jetbrains.kotlin.load.java.components.JavaResolverCache; -import org.jetbrains.kotlin.load.java.components.ExternalAnnotationResolver; -import org.jetbrains.kotlin.load.java.structure.JavaPropertyInitializerEvaluator; -import org.jetbrains.kotlin.load.java.components.SamConversionResolver; -import org.jetbrains.kotlin.load.java.components.RuntimeErrorReporter; -import org.jetbrains.kotlin.load.java.components.RuntimeSourceElementFactory; -import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver; -import org.jetbrains.kotlin.load.java.reflect.ReflectJavaClassFinder; -import org.jetbrains.kotlin.load.kotlin.reflect.ReflectKotlinClassFinder; -import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider; -import org.jetbrains.kotlin.load.java.lazy.GlobalJavaResolverContext; -import org.jetbrains.kotlin.load.kotlin.DeserializedDescriptorResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.load.kotlin.JavaClassDataFinder; -import org.jetbrains.kotlin.load.kotlin.BinaryClassAnnotationAndConstantLoaderImpl; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForRuntimeDescriptorLoader { - - private final ClassLoader classLoader; - private final ModuleDescriptor moduleDescriptor; - private final StorageManager storageManager; - private final JavaDescriptorResolver javaDescriptorResolver; - private final DeserializationComponentsForJava deserializationComponentsForJava; - private final ExternalSignatureResolver externalSignatureResolver; - private final JavaResolverCache javaResolverCache; - private final ExternalAnnotationResolver externalAnnotationResolver; - private final JavaPropertyInitializerEvaluator javaPropertyInitializerEvaluator; - private final SamConversionResolver samConversionResolver; - private final RuntimeErrorReporter runtimeErrorReporter; - private final RuntimeSourceElementFactory runtimeSourceElementFactory; - private final SingleModuleClassResolver singleModuleClassResolver; - private final ReflectJavaClassFinder reflectJavaClassFinder; - private final ReflectKotlinClassFinder reflectKotlinClassFinder; - private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider; - private final GlobalJavaResolverContext globalJavaResolverContext; - private final DeserializedDescriptorResolver deserializedDescriptorResolver; - private final ReflectionTypes reflectionTypes; - private final JavaClassDataFinder javaClassDataFinder; - private final BinaryClassAnnotationAndConstantLoaderImpl binaryClassAnnotationAndConstantLoader; - - public InjectorForRuntimeDescriptorLoader( - @NotNull ClassLoader classLoader, - @NotNull ModuleDescriptor moduleDescriptor, - @NotNull StorageManager storageManager - ) { - this.classLoader = classLoader; - this.moduleDescriptor = moduleDescriptor; - this.storageManager = storageManager; - this.reflectJavaClassFinder = new ReflectJavaClassFinder(classLoader); - this.reflectKotlinClassFinder = new ReflectKotlinClassFinder(classLoader); - this.runtimeErrorReporter = RuntimeErrorReporter.INSTANCE$; - this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(runtimeErrorReporter); - this.externalAnnotationResolver = ExternalAnnotationResolver.EMPTY; - this.externalSignatureResolver = ExternalSignatureResolver.DO_NOTHING; - this.javaResolverCache = JavaResolverCache.EMPTY; - this.javaPropertyInitializerEvaluator = JavaPropertyInitializerEvaluator.DO_NOTHING; - this.samConversionResolver = SamConversionResolver.EMPTY; - this.runtimeSourceElementFactory = RuntimeSourceElementFactory.INSTANCE$; - this.singleModuleClassResolver = new SingleModuleClassResolver(); - this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, reflectJavaClassFinder, reflectKotlinClassFinder, deserializedDescriptorResolver, externalAnnotationResolver, externalSignatureResolver, runtimeErrorReporter, javaResolverCache, javaPropertyInitializerEvaluator, samConversionResolver, runtimeSourceElementFactory, singleModuleClassResolver); - this.reflectionTypes = new ReflectionTypes(getModuleDescriptor()); - this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor(), reflectionTypes); - this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModuleDescriptor()); - this.javaClassDataFinder = new JavaClassDataFinder(reflectKotlinClassFinder, deserializedDescriptorResolver); - this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(getModuleDescriptor(), storageManager, reflectKotlinClassFinder, runtimeErrorReporter); - this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, getModuleDescriptor(), javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider); - - singleModuleClassResolver.setResolver(javaDescriptorResolver); - - deserializedDescriptorResolver.setComponents(deserializationComponentsForJava); - - } - - @PreDestroy - public void destroy() { - } - - public ModuleDescriptor getModuleDescriptor() { - return this.moduleDescriptor; - } - - public JavaDescriptorResolver getJavaDescriptorResolver() { - return this.javaDescriptorResolver; - } - - public DeserializationComponentsForJava getDeserializationComponentsForJava() { - return this.deserializationComponentsForJava; - } - -} diff --git a/generators/generators.iml b/generators/generators.iml index 7438945994b..ee0437ca914 100644 --- a/generators/generators.iml +++ b/generators/generators.iml @@ -14,7 +14,6 @@ - diff --git a/generators/injector-generator/injector-generator.iml b/generators/injector-generator/injector-generator.iml deleted file mode 100644 index 03570e3cc59..00000000000 --- a/generators/injector-generator/injector-generator.iml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ConstructorCall.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ConstructorCall.java deleted file mode 100644 index d1babea7cfe..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ConstructorCall.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import com.google.common.collect.Lists; -import org.jetbrains.annotations.NotNull; - -import java.lang.reflect.Constructor; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -public class ConstructorCall implements Expression { - private final Constructor constructor; - private final List constructorArguments = Lists.newArrayList(); - - ConstructorCall(Constructor constructor) { - this.constructor = constructor; - } - - public List getConstructorArguments() { - return constructorArguments; - } - - @Override - public String toString() { - return constructor.toString(); - } - - @NotNull - @Override - public String renderAsCode() { - StringBuilder builder = new StringBuilder("new " + constructor.getDeclaringClass().getSimpleName() + "("); - for (Iterator iterator = constructorArguments.iterator(); iterator.hasNext(); ) { - Field argument = iterator.next(); - if (argument.isPublic()) { - builder.append(argument.getGetterName()).append("()"); - } - else { - builder.append(argument.getName()); - } - if (iterator.hasNext()) { - builder.append(", "); - } - } - builder.append(")"); - return builder.toString(); - } - - @NotNull - @Override - public Collection getTypesToImport() { - return Collections.singletonList(new DiType(constructor.getDeclaringClass())); - } - - @NotNull - @Override - public DiType getType() { - return new DiType(constructor.getDeclaringClass()); - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Dependencies.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Dependencies.java deleted file mode 100644 index 4ab28de4195..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Dependencies.java +++ /dev/null @@ -1,303 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Lists; -import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; -import org.jetbrains.annotations.NotNull; - -import javax.inject.Inject; -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.lang.reflect.Modifier; -import java.lang.reflect.Type; -import java.util.*; - -import static org.jetbrains.kotlin.generators.di.InjectorGeneratorUtil.var; - -public class Dependencies { - - private final Set allFields = Sets.newLinkedHashSet(); - private final Set satisfied = Sets.newHashSet(); - private final Set used = Sets.newHashSet(); - private final Multimap typeToFields = HashMultimap.create(); - - private final Set newFields = Sets.newLinkedHashSet(); - - public void addField(@NotNull Field field) { - allFields.add(field); - typeToFields.put(field.getType(), field); - } - - public void addSatisfiedField(@NotNull Field field) { - addField(field); - satisfied.add(field); - } - - private Field addNewField(@NotNull DiType type) { - Field field = Field.create(false, type, var(type), null); - addField(field); - newFields.add(field); - return field; - } - - private void satisfyDependenciesFor(Field field, ImmutableStack neededFor) { - if (!satisfied.add(field)) return; - - Expression initialization = field.getInitialization(); - if (initialization instanceof InstantiateType) { - initializeByConstructorCall(field, neededFor); - } - DiType typeToInitialize = InjectorGeneratorUtil.getEffectiveFieldType(field); - - // Sort setters in order to get deterministic behavior - List declaredMethods = Lists.newArrayList(typeToInitialize.getClazz().getMethods()); - Collections.sort(declaredMethods, new Comparator() { - @Override - public int compare(@NotNull Method o1, @NotNull Method o2) { - return o1.getName().compareTo(o2.getName()); - } - }); - for (Method method : declaredMethods) { - if (method.getAnnotation(Inject.class) == null - || !method.getName().startsWith("set") - || method.getParameterTypes().length != 1) { - continue; - } - - Type parameterType = method.getGenericParameterTypes()[0]; - - - Field dependency = findDependencyOfType( - DiType.fromReflectionType(parameterType), - field + ": " + method + ": " + allFields, - neededFor.prepend(field) - ); - used.add(dependency); - - field.getDependencies().add(new SetterDependency(field, method.getName(), dependency)); - } - } - - private Field findDependencyOfType(DiType parameterType, String errorMessage, ImmutableStack neededFor) { - List fields = Lists.newArrayList(); - for (Map.Entry entry : typeToFields.entries()) { - if (parameterType.isAssignableFrom(entry.getKey())) { - fields.add(entry.getValue()); - } - } - - if (fields.isEmpty()) { - - if (parameterType.getClazz().isPrimitive() || parameterType.getClazz().getPackage().getName().equals("java.lang")) { - throw new IllegalArgumentException( - "cannot declare magic field of type " + parameterType + ": " + errorMessage); - } - - Field dependency = addNewField(parameterType); - satisfyDependenciesFor(dependency, neededFor); - return dependency; - } - else if (fields.size() == 1) { - return fields.iterator().next(); - } - else { - throw new IllegalArgumentException("Ambiguous dependency: \n" - + errorMessage - + "\nneeded for " + neededFor - + "\navailable: " + fields); - } - } - - private void initializeByConstructorCall(Field field, ImmutableStack neededFor) { - //noinspection RedundantCast - DiType type = ((InstantiateType) field.getInitialization()).getType(); - - Class clazz = type.getClazz(); - if (clazz.isInterface()) { - if (initializeAsSingleton(field, type)) return; - throw new IllegalArgumentException("cannot instantiate interface: " + clazz.getName() + " needed for " + neededFor); - } - if (Modifier.isAbstract(clazz.getModifiers())) { - if (initializeAsSingleton(field, type)) return; - throw new IllegalArgumentException("cannot instantiate abstract class: " + clazz.getName() + " needed for " + neededFor); - } - - // Note: projections are not computed here - - // Look for constructor - List> publicConstructors = findPublicConstructors(clazz.getConstructors()); - if (publicConstructors.size() != 1) { - if (initializeAsSingleton(field, type)) return; - if (publicConstructors.size() == 0) { - throw new IllegalArgumentException("No public constructor: " + clazz.getName() + " needed for " + neededFor); - } - else { - throw new IllegalArgumentException("Too many public constructors in " + clazz.getName() + " needed for " + neededFor); - } - } - - Constructor publicConstructor = publicConstructors.get(0); - - // Find arguments - ConstructorCall dependency = new ConstructorCall(publicConstructor); - Type[] parameterTypes = publicConstructor.getGenericParameterTypes(); - try { - for (Type parameterType : parameterTypes) { - Field fieldForParameter = findDependencyOfType( - DiType.fromReflectionType(parameterType), - "constructor: " + publicConstructor + ", parameter: " + parameterType, - neededFor.prepend(field) - ); - used.add(fieldForParameter); - dependency.getConstructorArguments().add(fieldForParameter); - } - } - catch (InstantiationFailedException e) { - throw e; - } - catch (RuntimeException e) { - throw new InstantiationFailedException( - "Could not instantiate '" + field + "' by calling " + publicConstructor + "\nneeded for " + neededFor, - e - ); - } - - field.setInitialization(dependency); - } - - @NotNull - private static List> findPublicConstructors(Constructor[] constructors) { - List> result = new ArrayList>(); - for (Constructor constructor : constructors) { - if (Modifier.isPublic(constructor.getModifiers())) { - result.add(constructor); - } - } - return result; - } - - private static boolean initializeAsSingleton(Field field, DiType type) { - Class clazz = type.getClazz(); - - return initializeBySingletonMethod(field, clazz, "getInstance") - || initializeBySingletonField(field, clazz, "INSTANCE") - || initializeBySingletonField(field, clazz, "INSTANCE$"); - } - - private static boolean initializeBySingletonMethod(Field field, Class clazz, String name) { - try { - clazz.getMethod(name); - field.setInitialization(GetSingleton.byMethod(clazz, name)); - return true; - } - catch (NoSuchMethodException e) { - // Ignored - } - return false; - } - - private static boolean initializeBySingletonField(Field field, Class clazz, String name) { - try { - clazz.getField(name); - field.setInitialization(GetSingleton.byField(clazz, name)); - return true; - } - catch (NoSuchFieldException e) { - // Ignored - } - - return false; - } - - public Collection satisfyDependencies() { - for (Field field : Lists.newArrayList(allFields)) { - satisfyDependenciesFor(field, LinkedImmutableStack.empty()); - } - return newFields; - } - - @NotNull - public Set getUsedFields() { - return used; - } - - private interface ImmutableStack { - @NotNull - ImmutableStack prepend(T t); - } - - private static class LinkedImmutableStack implements ImmutableStack { - - private static final ImmutableStack EMPTY = new ImmutableStack() { - @NotNull - @Override - public ImmutableStack prepend(Object o) { - return create(o); - } - - @Override - public String toString() { - return ""; - } - }; - - @NotNull - @SuppressWarnings("unchecked") - public static ImmutableStack empty() { - return EMPTY; - } - - @NotNull - public static LinkedImmutableStack create(@NotNull T t) { - return new LinkedImmutableStack(t, LinkedImmutableStack.empty()); - } - - private final T head; - private final ImmutableStack tail; - - private LinkedImmutableStack(@NotNull T head, @NotNull ImmutableStack tail) { - this.head = head; - this.tail = tail; - } - - @NotNull - @Override - public LinkedImmutableStack prepend(@NotNull T t) { - return new LinkedImmutableStack(t, this); - } - - @Override - public String toString() { - return doToString(this, new StringBuilder()).toString(); - } - - private static CharSequence doToString(@NotNull ImmutableStack stack, StringBuilder builder) { - if (stack == empty()) { - builder.append("|"); - return builder; - } - - LinkedImmutableStack list = (LinkedImmutableStack) stack; - builder.append("\n\t").append(list.head).append(" -> "); - return doToString(list.tail, builder); - } - } - -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/DependencyInjectorGenerator.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/DependencyInjectorGenerator.java deleted file mode 100644 index a9eea81ccce..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/DependencyInjectorGenerator.java +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import com.intellij.openapi.util.Condition; -import com.intellij.openapi.util.io.FileUtil; -import com.intellij.util.containers.ContainerUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.utils.Printer; - -import javax.annotation.PreDestroy; -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Method; -import java.util.*; - -import static org.jetbrains.kotlin.generators.di.InjectorGeneratorUtil.var; - -public class DependencyInjectorGenerator { - - private final Set fields = Sets.newLinkedHashSet(); - private final Set parameters = Sets.newLinkedHashSet(); - private final Set backsParameter = Sets.newHashSet(); - private final Set factoryMethods = Sets.newLinkedHashSet(); - private final List> implementsList = Lists.newArrayList(); - - private final Dependencies dependencies = new Dependencies(); - - private final ImportManager importManager = new ImportManager(); - - private String targetSourceRoot; - private String injectorPackageName; - private String injectorClassName; - private String generatedBy; - - public DependencyInjectorGenerator() { - } - - public String getInjectorClassName() { - return injectorClassName; - } - - public DependencyInjectorGenerator configure(String targetSourceRoot, String injectorPackageName, String injectorClassName, String generatedBy) { - this.targetSourceRoot = targetSourceRoot; - this.injectorPackageName = injectorPackageName; - this.injectorClassName = injectorClassName; - this.generatedBy = generatedBy; - return this; - } - - public void generate() throws IOException { - assert targetSourceRoot != null : "Don't forget to call configure()"; - - GeneratorsFileUtil.writeFileIfContentChanged(getOutputFile(), generateText().toString()); - } - - public File getOutputFile() { - String outputFileName = targetSourceRoot + "/" + injectorPackageName.replace(".", "/") + "/" + injectorClassName + ".java"; - return new File(outputFileName); - } - - public CharSequence generateText() throws IOException { - assert generatedBy != null : "Don't forget to call configure()"; - - fields.addAll(dependencies.satisfyDependencies()); - reportUnusedParameters(injectorPackageName, injectorClassName); - - StringBuilder preamble = new StringBuilder(); - generatePreamble(injectorPackageName, new Printer(preamble)); - - StringBuilder body = new StringBuilder(); - Printer p = new Printer(body); - - p.println(); - - p.println("/* This file is generated by " + generatedBy + ". DO NOT EDIT! */"); - p.println("@SuppressWarnings(\"all\")"); - p.print("public class " + injectorClassName); - generateImplementsList(p); - p.println(" {"); - p.pushIndent(); - p.println(); - generateFields(p); - p.println(); - generateConstructor(injectorClassName, p); - p.println(); - generateDestroy(injectorClassName, p); - p.println(); - generateGetters(p); - generateFactoryMethods(p); - p.popIndent(); - p.println("}"); // class - - importManager.addClass(NotNull.class); - importManager.addClass(PreDestroy.class); - StringBuilder imports = new StringBuilder(); - generateImports(new Printer(imports), injectorPackageName); - - StringBuilder text = new StringBuilder(preamble); - text.append(imports); - text.append(body); - return text; - } - - private void reportUnusedParameters(String injectorPackageName, String injectorClassName) { - Sets.SetView unusedParameters = Sets.difference(backsParameter, dependencies.getUsedFields()); - for (Field parameter : unusedParameters) { - if (!parameter.isPublic()) { - System.err.println("Unused parameter: " + parameter + " for " + injectorPackageName + "." + injectorClassName); - } - } - } - - private static void generatePreamble(String injectorPackageName, Printer p) throws IOException { - p.println(FileUtil.loadFile(new File("license/LICENSE.txt"))); - p.println("package " + injectorPackageName + ";"); - p.println(); - } - - private void generateImplementsList(Printer out) { - if (!implementsList.isEmpty()) { - out.print(" implements "); - for (Iterator> iterator = implementsList.iterator(); iterator.hasNext(); ) { - Class superInterface = iterator.next(); - if (!superInterface.isInterface()) { - throw new IllegalArgumentException("Only interfaces are supported as supertypes"); - } - out.print(type(superInterface)); - if (iterator.hasNext()) { - out.print(", "); - } - } - } - } - - public void implementInterface(Class superInterface) { - implementsList.add(superInterface); - } - - public void addParameter(boolean reexport, @NotNull DiType type, @Nullable String name, boolean required, boolean useAsContext) { - Field field = addField(reexport, type, name, null, useAsContext); - Parameter parameter = new Parameter(type, name, field, required); - parameters.add(parameter); - field.setInitialization(new ParameterExpression(parameter)); - backsParameter.add(field); - dependencies.addSatisfiedField(field); - } - - public Field addField(boolean isPublic, DiType type, @Nullable String name, @Nullable Expression init, boolean useAsContext) { - Field field = Field.create(isPublic, type, name == null ? var(type) : name, init); - addField(field); - if (useAsContext) { - for (Field accessibleViaGetter : field.getFieldsAccessibleViaGetters()) { - addField(accessibleViaGetter); - } - } - return field; - } - - private void addField(@NotNull Field field) { - fields.add(field); - dependencies.addField(field); - } - - public void addFactoryMethod(@NotNull Class returnType, Class... parameterTypes) { - List types = Lists.newArrayList(); - for (Class type : parameterTypes) { - types.add(new DiType(type)); - } - addFactoryMethod(new DiType(returnType), types); - } - - public void addFactoryMethod(@NotNull DiType returnType, DiType... parameterTypes) { - addFactoryMethod(returnType, Arrays.asList(parameterTypes)); - } - - public void addFactoryMethod(@NotNull DiType returnType, @NotNull Collection parameterTypes) { - List parameters = Lists.newArrayList(); - for (DiType type : parameterTypes) { - parameters.add(new Parameter(type, var(type), null, false)); - } - factoryMethods.add(new FactoryMethod("create" + type(returnType), returnType, parameters)); - } - - private void generateImports(Printer out, String injectorPackageName) { - for (Class importedClass : importManager.getImportedClasses()) { - if (importedClass.isPrimitive()) continue; - String importedPackageName = importedClass.getPackage().getName(); - if ("java.lang".equals(importedPackageName) - || injectorPackageName.equals(importedPackageName)) { - continue; - } - out.println("import " + importedClass.getCanonicalName() + ";"); - } - } - - private void generateFields(Printer out) { - for (Field field : getUsedFields()) { - out.println("private final " + type(InjectorGeneratorUtil.getEffectiveFieldType(field)) + " " + field.getName() + ";"); - } - } - - @NotNull - private List getUsedFields() { - return ContainerUtil.filter(fields, new Condition() { - @Override - public boolean value(Field field) { - return dependencies.getUsedFields().contains(field) || field.isPublic(); - } - }); - } - - private void generateConstructor(String injectorClassName, Printer p) { - // Constructor parameters - if (parameters.isEmpty()) { - p.println("public ", injectorClassName, "() {"); - } - else { - p.print("public ", injectorClassName); - generateParameterList(p, parameters); - } - - p.pushIndent(); - - InjectionLogicGenerator.generateForFields(p, getUsedFields()); - - p.popIndent(); - p.println("}"); - } - - private void generateParameterList(Printer p, Collection parameters) { - p.printlnWithNoIndent("("); - p.pushIndent(); - for (Iterator iterator = parameters.iterator(); iterator.hasNext(); ) { - Parameter parameter = iterator.next(); - p.printIndent(); - if (parameter.isRequired()) { - p.printWithNoIndent("@NotNull "); - } - p.printWithNoIndent(type(parameter.getType()), " ", parameter.getName()); - if (iterator.hasNext()) { - p.printlnWithNoIndent(","); - } - } - p.printlnWithNoIndent(); - p.popIndent(); - p.println(") {"); - } - - private void generateDestroy(@NotNull String injectorClassName, @NotNull Printer out) { - out.println("@PreDestroy"); - out.println("public void destroy() {"); - out.pushIndent(); - for (Field field : fields) { - // TODO: type of field may be different from type of object - List preDestroyMethods = InjectorGeneratorUtil - .getPreDestroyMethods(InjectorGeneratorUtil.getEffectiveFieldType(field).getClazz()); - for (Method preDestroy : preDestroyMethods) { - out.println(field.getName() + "." + preDestroy.getName() + "();"); - } - if (preDestroyMethods.size() > 0) { - out.println(); - } - } - out.popIndent(); - out.println("}"); - } - - private void generateGetters(Printer out) { - for (Field field : fields) { - if (!field.isPublic()) continue; - String visibility = "public"; - out.println(visibility + " " + type(field.getType()) + " " + field.getGetterName() + "() {"); - out.pushIndent(); - - out.println("return this." + field.getName() + ";"); - - out.popIndent(); - out.println("}"); - out.println(); - } - - } - - private void generateFactoryMethods(Printer p) { - if (factoryMethods.isEmpty()) return; - p.println(); - - p.pushIndent(); - for (FactoryMethod method : factoryMethods) { - generateFactoryMethod(p, method); - } - p.popIndent(); - } - - private Collection computeFieldsForFactoryMethod(FactoryMethod method, Field resultField) { - Dependencies localDependencies = new Dependencies(); - - Map parameterToField = Maps.newHashMap(); - for (Parameter parameter : method.getParameters()) { - Field field = new Field(true, parameter.getType(), parameter.getName()); - localDependencies.addSatisfiedField(field); - parameterToField.put(parameter, field); - } - - for (Field storedField : fields) { - localDependencies.addSatisfiedField(storedField); - } - - localDependencies.addField(resultField); - - Collection fields = Lists.newArrayList(localDependencies.satisfyDependencies()); - fields.add(resultField); - return fields; - } - - private void generateFactoryMethod(Printer p, FactoryMethod method) { - Field resultField = new Field(true, method.getReturnType(), "_result"); - Collection fields = computeFieldsForFactoryMethod(method, resultField); - - p.print("public ", type(method.getReturnType()), " ", method.getName()); - generateParameterList(p, method.getParameters()); - - p.pushIndent(); - - InjectionLogicGenerator.generateForLocalVariables(importManager, p, fields); - - p.println("return ", resultField.getName(), ";"); - - p.popIndent(); - p.println("}"); - } - - private CharSequence type(DiType type) { - return importManager.render(type); - } - - private CharSequence type(Class type) { - return type(DiType.fromReflectionType(type)); - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/DiType.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/DiType.java deleted file mode 100644 index 24272ccc3d7..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/DiType.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import com.google.common.collect.Lists; -import org.jetbrains.annotations.NotNull; - -import java.lang.reflect.ParameterizedType; -import java.lang.reflect.Type; -import java.util.Collections; -import java.util.List; - -public class DiType { - @NotNull - private final Class clazz; - @NotNull - private final List typeParameters; - - public DiType(@NotNull Class clazz, @NotNull List typeParameters) { - this.clazz = clazz; - this.typeParameters = typeParameters; - - if (clazz.getTypeParameters().length != typeParameters.size()) { - throw new IllegalStateException("type parameter count mismatch: " + clazz + ", " + typeParameters); - } - } - - public DiType(@NotNull Class clazz) { - this(clazz, Collections.emptyList()); - } - - @NotNull - public Class getClazz() { - return clazz; - } - - @NotNull - public List getTypeParameters() { - return typeParameters; - } - - public boolean isAssignableFrom(@NotNull DiType that) { - if (!this.clazz.isAssignableFrom(that.clazz)) { - return false; - } - // TODO: following code incorrectly assumes that each type parameter - // is projected into type parameter in the same position - return this.typeParameters.equals(that.typeParameters); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - DiType type = (DiType) o; - - if (!clazz.equals(type.clazz)) return false; - if (!typeParameters.equals(type.typeParameters)) return false; - - return true; - } - - @Override - public int hashCode() { - int result = clazz.hashCode(); - result = 31 * result + typeParameters.hashCode(); - return result; - } - - @NotNull - public static DiType fromReflectionType(@NotNull Type type) { - if (type instanceof Class) { - return new DiType((Class) type); - } - if (type instanceof ParameterizedType) { - ParameterizedType parameterizedType = (ParameterizedType) type; - Class owner = (Class) parameterizedType.getRawType(); - List diTypeParameters = Lists.newArrayList(); - for (Type typeParameter : parameterizedType.getActualTypeArguments()) { - diTypeParameters.add(fromReflectionType(typeParameter)); - } - return new DiType(owner, diTypeParameters); - } - throw new IllegalArgumentException("unsupported type: " + type); - } - - @NotNull - public static DiType collectionOf(@NotNull Class type) { - return collectionOf(new DiType(type)); - } - - @NotNull - public static DiType collectionOf(@NotNull DiType type) { - return new DiType(List.class, Lists.newArrayList(type)); - } - - @NotNull - public static DiType listOf(@NotNull Class type) { - return collectionOf(new DiType(type)); - } - - @NotNull - public static DiType listOf(@NotNull DiType type) { - return new DiType(List.class, Lists.newArrayList(type)); - } - - @Override - public String toString() { - if (typeParameters.size() > 0) { - return clazz + "<...>"; - } - else { - return clazz.toString(); - } - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Expression.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Expression.java deleted file mode 100644 index fd179919ecd..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Expression.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.Collection; - -public interface Expression { - @NotNull - String renderAsCode(); - - @NotNull - Collection getTypesToImport(); - - @Nullable - DiType getType(); -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/FactoryMethod.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/FactoryMethod.java deleted file mode 100644 index 29caef0d751..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/FactoryMethod.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import org.jetbrains.annotations.NotNull; - -import java.util.List; - -public class FactoryMethod { - private final String name; - private final List parameters; - private final DiType returnType; - - public FactoryMethod(@NotNull String name, @NotNull DiType returnType, @NotNull List parameters) { - this.name = name; - this.parameters = parameters; - this.returnType = returnType; - } - - @NotNull - public String getName() { - return name; - } - - @NotNull - public List getParameters() { - return parameters; - } - - @NotNull - public DiType getReturnType() { - return returnType; - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Field.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Field.java deleted file mode 100644 index 943eac16ef4..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Field.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import com.google.common.collect.Lists; -import com.intellij.openapi.util.text.StringUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.lang.reflect.Method; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.TreeMap; - -import static org.jetbrains.kotlin.generators.di.InjectorGeneratorUtil.var; - -class Field { - - public static Field create(boolean isPublic, DiType type, String name, @Nullable Expression init) { - Field field = new Field(isPublic, type, name); - if (init != null) { - field.setInitialization(init); - } - return field; - } - - private final DiType type; - private final String name; - private final boolean isPublic; - - @NotNull - private Expression initialization; - - private final List dependencies = Lists.newArrayList(); - - Field(boolean isPublic, DiType type, String name) { - this.isPublic = isPublic; - this.type = type; - this.name = name; - this.initialization = new InstantiateType(type); - } - - public DiType getType() { - return type; - } - - public String getName() { - return name; - } - - public String getTypeName() { - return type.getClazz().getSimpleName(); - } - - public String getGetterName() { - String prefix; - if (getType().getClazz() == boolean.class || getType().getClazz() == Boolean.class) { - prefix = "is"; - } - else { - prefix = "get"; - } - return prefix + StringUtil.capitalize(getName()); - } - - @NotNull - public Expression getInitialization() { - return initialization; - } - - public void setInitialization(@NotNull Expression initialization) { - this.initialization = initialization; - } - - public List getDependencies() { - return dependencies; - } - - public boolean isPublic() { - return isPublic; - } - - @Override - public String toString() { - return getTypeName() + " " + getName(); - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Field field = (Field) o; - - if (!name.equals(field.name)) return false; - if (!type.equals(field.type)) return false; - - return true; - } - - @Override - public int hashCode() { - int result = type.hashCode(); - result = 31 * result + name.hashCode(); - return result; - } - - @NotNull - public List getFieldsAccessibleViaGetters() { - Class clazz = type.getClazz(); - List result = Lists.newArrayList(); - for (Method method : allGetters(clazz)) { - MethodCall init = new MethodCall(this, method); - DiType initType = init.getType(); - result.add(create(false, initType, var(initType), init)); - } - return result; - } - - @NotNull - private static Collection allGetters(@NotNull Class clazz) { - Map getters = new TreeMap(); - for (Method method : clazz.getMethods()) { - if (method.getDeclaringClass() == Object.class) { - continue; - } - if (isGetter(method)) { - if (!getters.containsKey(method.getName())) { - getters.put(method.getName(), method); - } - } - } - return getters.values(); - } - - private static boolean isGetter(@NotNull Method method) { - String name = method.getName(); - return name.startsWith("get") && name.length() > 3 && method.getParameterTypes().length == 0; - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GetSingleton.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GetSingleton.java deleted file mode 100644 index ab1c53b0db2..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GetSingleton.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; -import java.util.Collections; - -public class GetSingleton implements Expression { - - public static GetSingleton byMethod(@NotNull Class singletonClass, @NotNull String methodName) { - return new GetSingleton(singletonClass, methodName, "()"); - } - - public static GetSingleton byField(@NotNull Class singletonClass, @NotNull String fieldName) { - return new GetSingleton(singletonClass, fieldName, ""); - } - - private final Class singletonClass; - private final String memberName; - private final String callSuffix; - - private GetSingleton(@NotNull Class singletonClass, @NotNull String name, String callSuffix) { - this.singletonClass = singletonClass; - this.memberName = name; - this.callSuffix = callSuffix; - } - - @Override - public String toString() { - return renderAsCode(); - } - - @NotNull - @Override - public String renderAsCode() { - return singletonClass.getSimpleName() + "." + memberName + callSuffix; - } - - @NotNull - @Override - public Collection getTypesToImport() { - return Collections.singletonList(new DiType(singletonClass)); - } - - @NotNull - @Override - public DiType getType() { - return new DiType(singletonClass); - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GivenExpression.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GivenExpression.java deleted file mode 100644 index 73f0586e786..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GivenExpression.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import com.google.common.collect.Lists; -import org.jetbrains.annotations.NotNull; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; - -public class GivenExpression implements Expression { - private final String expression; - private final Collection typesToImport; - - - public GivenExpression(@NotNull String expression) { - this(expression, Collections.emptyList()); - } - - public GivenExpression(@NotNull String expression, @NotNull DiType... typesToImport) { - this(expression, Arrays.asList(typesToImport)); - } - - public GivenExpression(@NotNull String expression, @NotNull Class... typesToImport) { - this(expression, convertClassesToDiTypes(typesToImport)); - } - - private static Collection convertClassesToDiTypes(Class[] typesToImport) { - Collection types = Lists.newArrayList(); - for (Class aClass : typesToImport) { - types.add(new DiType(aClass)); - } - return types; - } - - public GivenExpression(@NotNull String expression, @NotNull Collection typesToImport) { - this.expression = expression; - this.typesToImport = typesToImport; - } - - public String getExpression() { - return expression; - } - - @Override - public String toString() { - return "given<" + expression + ">"; - } - - @Override - public DiType getType() { - return null; - } - - @NotNull - @Override - public String renderAsCode() { - return expression; - } - - @NotNull - @Override - public Collection getTypesToImport() { - return typesToImport; - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ImportManager.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ImportManager.java deleted file mode 100644 index 45c819c29ef..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ImportManager.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import com.google.common.collect.Maps; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.utils.Printer; - -import java.util.Collection; -import java.util.Iterator; -import java.util.Map; - -public class ImportManager { - - private final Map> classes = Maps.newLinkedHashMap(); - - public boolean addClass(@NotNull Class classToImport) { - String simpleName = classToImport.getSimpleName(); - - Class imported = classes.get(simpleName); - if (imported != null) return classToImport.equals(imported); - - classes.put(simpleName, classToImport); - return true; - } - - @NotNull - public Collection> getImportedClasses() { - return classes.values(); - } - - @NotNull - public CharSequence render(@NotNull DiType type) { - StringBuilder out = new StringBuilder(); - Printer p = new Printer(out); - if (addClass(type.getClazz())) { - p.print(type.getClazz().getSimpleName()); - } - else { - p.print(type.getClazz().getCanonicalName()); - } - - if (!type.getTypeParameters().isEmpty()) { - p.print("<"); - for (Iterator iterator = type.getTypeParameters().iterator(); iterator.hasNext(); ) { - p.print(render(iterator.next())); - if (iterator.hasNext()) { - p.print(", "); - } - } - p.print(">"); - } - return out; - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectionLogicGenerator.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectionLogicGenerator.java deleted file mode 100644 index a8e5e1fdbec..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectionLogicGenerator.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.utils.DFS; -import org.jetbrains.kotlin.utils.Printer; - -import java.lang.reflect.Method; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -public abstract class InjectionLogicGenerator { - - public static void generateForFields(@NotNull Printer p, @NotNull Collection fields) { - new InjectionLogicGenerator() { - @Override - public String prefixForPostConstructorCall(Field field) { - return ""; - } - - @Override - public String prefixForSetterCall(Field field) { - return field.isPublic() ? "this." : ""; - } - - @Override - public String prefixForInitialization(Field field) { - return "this."; - } - }.generate(p, fields); - } - - public static void generateForLocalVariables( - @NotNull final ImportManager importManager, - @NotNull Printer p, - @NotNull Collection fields - ) { - new InjectionLogicGenerator() { - @Override - public String prefixForPostConstructorCall(Field field) { - return ""; - } - - @Override - public String prefixForSetterCall(Field field) { - return ""; - } - - @Override - public String prefixForInitialization(Field field) { - return importManager.render(field.getType()) + " "; - } - }.generate(p, fields); - } - - protected void generate(@NotNull Printer p, @NotNull Collection fields) { - List topOrder = DFS.topologicalOrder(fields, new DFS.Neighbors() { - @NotNull - @Override - public Iterable getNeighbors(Field current) { - Expression initialization = current.getInitialization(); - if (initialization instanceof ConstructorCall) { - ConstructorCall call = (ConstructorCall) initialization; - return call.getConstructorArguments(); - } - else if (initialization instanceof MethodCall) { - return Collections.singletonList(((MethodCall) initialization).getReceiver()); - } - return Collections.emptyList(); - } - }); - Collections.reverse(topOrder); - - // Initialize fields - for (Field field : topOrder) { - //if (!backsParameter.contains(field) || field.isPublic()) { - p.println(prefixForInitialization(field), field.getName(), " = ", field.getInitialization().renderAsCode(), ";"); - //} - } - p.printlnWithNoIndent(); - - // Call setters - for (Field field : fields) { - if (!(field.getInitialization() instanceof ConstructorCall)) continue; - for (SetterDependency dependency : field.getDependencies()) { - String prefix = prefixForSetterCall(field); - String dependencyName = dependency.getDependency().getName(); - String dependentName = dependency.getDependent().getName(); - p.println(prefix, dependentName, ".", dependency.getSetterName(), "(", dependencyName, ");"); - } - if (!field.getDependencies().isEmpty()) { - p.printlnWithNoIndent(); - } - } - - // call @PostConstruct - for (Field field : fields) { - // TODO: type of field may be different from type of object - List postConstructMethods = InjectorGeneratorUtil - .getPostConstructMethods(InjectorGeneratorUtil.getEffectiveFieldType(field).getClazz()); - for (Method postConstruct : postConstructMethods) { - p.println(prefixForPostConstructorCall(field), field.getName(), ".", postConstruct.getName(), "();"); - } - if (postConstructMethods.size() > 0) { - p.printlnWithNoIndent(); - } - } - } - - protected abstract String prefixForInitialization(Field field); - - protected abstract String prefixForSetterCall(Field field); - - protected abstract String prefixForPostConstructorCall(Field field); -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectorGeneratorFacade.kt b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectorGeneratorFacade.kt deleted file mode 100644 index 318c06a9b0d..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectorGeneratorFacade.kt +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di - -public fun generator( - targetSourceRoot: String, - injectorPackageName: String, - injectorClassName: String, - generatedBy: String, - body: DependencyInjectorGenerator.() -> Unit -): DependencyInjectorGenerator { - val generator = DependencyInjectorGenerator() - generator.configure(targetSourceRoot, injectorPackageName, injectorClassName, generatedBy) - generator.body() - return generator -} - -inline public fun DependencyInjectorGenerator.field( - name: String = defaultName(javaClass()), - init: Expression? = null, - useAsContext: Boolean = false -) { - addField(false, DiType(javaClass()), name, init, useAsContext) -} - -inline public fun DependencyInjectorGenerator.publicField( - name: String = defaultName(javaClass()), - init: Expression? = null, - useAsContext: Boolean = false -) { - addField(true, DiType(javaClass()), name, init, useAsContext) -} - -inline public fun DependencyInjectorGenerator.parameter( - name: String = defaultName(javaClass()), - useAsContext: Boolean = false -) { - addParameter(false, DiType(javaClass()), name, true, useAsContext) -} - -inline public fun DependencyInjectorGenerator.publicParameter( - name: String = defaultName(javaClass()), - useAsContext: Boolean = false -) { - addParameter(true, DiType(javaClass()), name, true, useAsContext) -} - -public fun defaultName(entityType: Class<*>): String = InjectorGeneratorUtil.`var`(DiType(entityType)) diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectorGeneratorUtil.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectorGeneratorUtil.java deleted file mode 100644 index 1a6342dc4ee..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InjectorGeneratorUtil.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import com.google.common.collect.Lists; -import com.intellij.openapi.util.text.StringUtil; -import org.jetbrains.annotations.NotNull; - -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import java.lang.annotation.Annotation; -import java.lang.reflect.Method; -import java.util.List; - -public class InjectorGeneratorUtil { - public static DiType getEffectiveFieldType(Field field) { - DiType implType = field.getInitialization().getType(); - return implType == null ? field.getType() : implType; - } - - public static List getPostConstructMethods(Class clazz) { - return getInjectSpecialMethods(clazz, PostConstruct.class); - } - - public static List getPreDestroyMethods(Class clazz) { - return getInjectSpecialMethods(clazz, PreDestroy.class); - } - - private static List getInjectSpecialMethods(Class clazz, Class annotationClass) { - List r = Lists.newArrayList(); - for (Method method : clazz.getMethods()) { - if (method.getAnnotation(annotationClass) != null) { - if (method.getParameterTypes().length != 0) { - throw new IllegalStateException("@PostConstruct method must have no arguments: " + method); - } - r.add(method); - } - } - return r; - } - - @NotNull - public static String var(@NotNull DiType type) { - StringBuilder sb = new StringBuilder(); - sb.append(StringUtil.decapitalize(type.getClazz().getSimpleName().replaceFirst("(?<=.)Impl$", ""))); - if (type.getTypeParameters().size() > 0) { - sb.append("Of"); - } - for (DiType parameter : type.getTypeParameters()) { - sb.append(StringUtil.capitalize(var(parameter))); - } - return sb.toString(); - } - - private InjectorGeneratorUtil() {} -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InstantiateType.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InstantiateType.java deleted file mode 100644 index 6322943ae2c..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InstantiateType.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; - -public class InstantiateType implements Expression { - - private final DiType type; - - public InstantiateType(@NotNull DiType type) { - this.type = type; - } - - public InstantiateType(@NotNull Class theClass) { - this(new DiType(theClass)); - } - - @Override - @NotNull - public DiType getType() { - return type; - } - - @Override - public String toString() { - return "[Instantiate type: " + getType() + "]"; - } - - @NotNull - @Override - public String renderAsCode() { - throw new UnsupportedOperationException("This should be replaced by some concrete expression by the time this method is called"); - } - - @NotNull - @Override - public Collection getTypesToImport() { - throw new UnsupportedOperationException("This should be replaced by some concrete expression by the time this method is called"); - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InstantiationFailedException.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InstantiationFailedException.java deleted file mode 100644 index 2481b91a4ad..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/InstantiationFailedException.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -public class InstantiationFailedException extends RuntimeException { - public InstantiationFailedException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/MethodCall.kt b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/MethodCall.kt deleted file mode 100644 index f1d237c5fc9..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/MethodCall.kt +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di - -import java.lang.reflect.Method - -public class MethodCall( - val receiver: Field, - val method: Method -) : Expression { - override fun renderAsCode(): String { - return "${receiver.getName()}.${method.getName()}()" - } - - override fun getTypesToImport() = listOf() - - override fun getType(): DiType = DiType.fromReflectionType(method.getGenericReturnType()) -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Parameter.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Parameter.java deleted file mode 100644 index dc6e7b75188..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/Parameter.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -class Parameter { - private final DiType type; - private final String name; - private final Field field; - private final boolean required; - - Parameter(DiType type, String name, Field field, boolean required) { - this.type = type; - this.name = name; - this.field = field; - this.required = required; - } - - public DiType getType() { - return type; - } - - public String getName() { - return name; - } - - public Field getField() { - return field; - } - - public boolean isRequired() { - return required; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Parameter parameter = (Parameter) o; - - if (name != null ? !name.equals(parameter.name) : parameter.name != null) return false; - if (type != null ? !type.equals(parameter.type) : parameter.type != null) return false; - - return true; - } - @Override - public int hashCode() { - int result = type != null ? type.hashCode() : 0; - result = 31 * result + (name != null ? name.hashCode() : 0); - return result; - } - - -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ParameterExpression.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ParameterExpression.java deleted file mode 100644 index 5c946a34cd4..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/ParameterExpression.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -import org.jetbrains.annotations.NotNull; - -import java.util.Collection; -import java.util.Collections; - -public class ParameterExpression implements Expression { - private final Parameter parameter; - - public ParameterExpression(Parameter parameter) { - this.parameter = parameter; - } - - public Parameter getParameter() { - return parameter; - } - - @Override - public String toString() { - return "parameter<" + parameter.getName() + ">"; - } - - @NotNull - @Override - public String renderAsCode() { - return parameter.getName(); - } - - @NotNull - @Override - public Collection getTypesToImport() { - return Collections.emptyList(); - } - - @NotNull - @Override - public DiType getType() { - return parameter.getType(); - } -} diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/SetterDependency.java b/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/SetterDependency.java deleted file mode 100644 index 2106b6110a1..00000000000 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/SetterDependency.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.di; - -class SetterDependency { - private final Field dependent; - private final String setterName; - private final Field dependency; - - SetterDependency(Field dependent, String setterName, Field dependency) { - this.dependent = dependent; - this.setterName = setterName; - this.dependency = dependency; - } - - public Field getDependent() { - return dependent; - } - - public String getSetterName() { - return setterName; - } - - public Field getDependency() { - return dependency; - } - - @Override - public String toString() { - return dependent.getName() + "." + setterName + "(" + dependency.getName() + ")"; - } -} diff --git a/generators/src/org/jetbrains/kotlin/generators/evaluate/GenerateOperationsMap.kt b/generators/src/org/jetbrains/kotlin/generators/evaluate/GenerateOperationsMap.kt index b831d2b8f85..bcb6cc7b13c 100644 --- a/generators/src/org/jetbrains/kotlin/generators/evaluate/GenerateOperationsMap.kt +++ b/generators/src/org/jetbrains/kotlin/generators/evaluate/GenerateOperationsMap.kt @@ -16,15 +16,14 @@ package org.jetbrains.kotlin.generators.evaluate -import java.io.File -import com.intellij.openapi.util.io.FileUtil -import org.jetbrains.kotlin.generators.di.GeneratorsFileUtil -import org.jetbrains.kotlin.utils.Printer import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor -import org.jetbrains.kotlin.types.TypeUtils +import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil import org.jetbrains.kotlin.types.JetType +import org.jetbrains.kotlin.types.TypeUtils +import org.jetbrains.kotlin.utils.Printer +import java.io.File val DEST_FILE: File = File("compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/OperationsMapGenerated.kt") private val EXCLUDED_FUNCTIONS = listOf("rangeTo", "hashCode", "inc", "dec", "subSequence") diff --git a/generators/src/org/jetbrains/kotlin/generators/frontend/GenerateKeywordStrings.java b/generators/src/org/jetbrains/kotlin/generators/frontend/GenerateKeywordStrings.java index 5c6051b96d4..4570e0448b5 100644 --- a/generators/src/org/jetbrains/kotlin/generators/frontend/GenerateKeywordStrings.java +++ b/generators/src/org/jetbrains/kotlin/generators/frontend/GenerateKeywordStrings.java @@ -19,7 +19,7 @@ package org.jetbrains.kotlin.generators.frontend; import com.intellij.openapi.util.io.FileUtil; import com.intellij.psi.tree.IElementType; import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.generators.di.GeneratorsFileUtil; +import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil; import org.jetbrains.kotlin.lexer.JetKeywordToken; import org.jetbrains.kotlin.lexer.JetTokens; import org.jetbrains.kotlin.utils.Printer; diff --git a/generators/src/org/jetbrains/kotlin/generators/injectors/GenerateInjectors.kt b/generators/src/org/jetbrains/kotlin/generators/injectors/GenerateInjectors.kt deleted file mode 100644 index f0f381299eb..00000000000 --- a/generators/src/org/jetbrains/kotlin/generators/injectors/GenerateInjectors.kt +++ /dev/null @@ -1,288 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.injectors - -import com.intellij.openapi.project.Project -import com.intellij.psi.search.GlobalSearchScope -import org.jetbrains.kotlin.context.GlobalContext -import org.jetbrains.kotlin.context.LazyResolveToken -import org.jetbrains.kotlin.context.ModuleContext -import org.jetbrains.kotlin.descriptors.ModuleDescriptor -import org.jetbrains.kotlin.generators.di.* -import org.jetbrains.kotlin.js.resolve.KotlinJsCheckerProvider -import org.jetbrains.kotlin.load.java.JavaClassFinderImpl -import org.jetbrains.kotlin.load.java.JavaFlexibleTypeCapabilitiesProvider -import org.jetbrains.kotlin.load.java.components.* -import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver -import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver -import org.jetbrains.kotlin.load.java.reflect.ReflectJavaClassFinder -import org.jetbrains.kotlin.load.java.sam.SamConversionResolverImpl -import org.jetbrains.kotlin.load.java.structure.JavaPropertyInitializerEvaluator -import org.jetbrains.kotlin.load.java.structure.impl.JavaPropertyInitializerEvaluatorImpl -import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava -import org.jetbrains.kotlin.load.kotlin.KotlinJvmCheckerProvider -import org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinder -import org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinderFactory -import org.jetbrains.kotlin.load.kotlin.reflect.ReflectKotlinClassFinder -import org.jetbrains.kotlin.resolve.* -import org.jetbrains.kotlin.resolve.calls.CallResolver -import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver -import org.jetbrains.kotlin.resolve.jvm.JavaLazyAnalyzerPostConstruct -import org.jetbrains.kotlin.resolve.lazy.* -import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory -import org.jetbrains.kotlin.storage.StorageManager -import org.jetbrains.kotlin.types.DynamicTypesAllowed -import org.jetbrains.kotlin.types.DynamicTypesSettings -import org.jetbrains.kotlin.types.expressions.* - -// NOTE: After making changes, you need to re-generate the injectors. -// To do that, you can run main in this file. -public fun main(args: Array) { - for (generator in createInjectorGenerators()) { - try { - generator.generate() - } - catch (e: Throwable) { - System.err.println(generator.getOutputFile()) - throw e - } - } -} - -private val DI_DEFAULT_PACKAGE = "org.jetbrains.kotlin.di" - -public fun createInjectorGenerators(): List = - listOf( - generatorForLazyLocalClassifierAnalyzer(), - generatorForTopDownAnalyzerForJvm(), - generatorForRuntimeDescriptorLoader(), - generatorForLazyResolveWithJava(), - generatorForTopDownAnalyzerForJs(), - generatorForMacro(), - generatorForTests(), - generatorForLazyResolve(), - generatorForBodyResolve(), - generatorForLazyBodyResolve(), - generatorForReplWithJava() - ) - -private fun generatorForLazyLocalClassifierAnalyzer() = - generator("compiler/frontend/src", DI_DEFAULT_PACKAGE, "InjectorForLazyLocalClassifierAnalyzer") { - parameter(useAsContext = true) - parameter() - parameter(useAsContext = true) - parameter() - parameter() - - publicField() - - field() - field() - field() - field() - } - -private fun generatorForLazyBodyResolve() = - generator("compiler/frontend/src", DI_DEFAULT_PACKAGE, "InjectorForLazyBodyResolve") { - parameter(useAsContext = true) - parameter(name = "analyzer") - parameter() - parameter() - parameter(useAsContext = true) - parameter() - - publicField() - } - -private fun generatorForTopDownAnalyzerForJs() = - generator("js/js.frontend/src", DI_DEFAULT_PACKAGE, "InjectorForTopDownAnalyzerForJs") { - commonForResolveSessionBased() - - publicField() - - field(useAsContext = true) - field() - } - -private fun generatorForTopDownAnalyzerForJvm() = - generator("compiler/frontend.java/src", DI_DEFAULT_PACKAGE, "InjectorForTopDownAnalyzerForJvm") { - commonForJavaTopDownAnalyzer() - } - -private fun generatorForRuntimeDescriptorLoader() = - generator("core/descriptors.runtime/src", DI_DEFAULT_PACKAGE, "InjectorForRuntimeDescriptorLoader") { - parameter() - publicParameter() - parameter() - - publicField() - publicField() - - field(init = GetSingleton.byField(javaClass(), "DO_NOTHING")) - field(init = GetSingleton.byField(javaClass(), "EMPTY")) - field(init = GetSingleton.byField(javaClass(), "EMPTY")) - field(init = GetSingleton.byField(javaClass(), "DO_NOTHING")) - field(init = GetSingleton.byField(javaClass(), "EMPTY")) - - field() - field() - field() - - field() - field() - } - -private fun generatorForLazyResolveWithJava() = - generator("compiler/frontend.java/src", DI_DEFAULT_PACKAGE, "InjectorForLazyResolveWithJava") { - commonForResolveSessionBased() - - parameter(name = "moduleContentScope") - parameter() - - publicField() - - field( - init = GivenExpression(javaClass().getName() - + ".SERVICE.getInstance(project).create(moduleContentScope)") - ) - - field() - field() - field() - field() - field() - field() - field() - field() - field() - field() - field() - - field(useAsContext = true) - } - -private fun generatorForReplWithJava() = - generator("compiler/frontend.java/src", DI_DEFAULT_PACKAGE, "InjectorForReplWithJava") { - commonForJavaTopDownAnalyzer() - parameter() - } - -private fun generatorForMacro() = - generator("compiler/frontend/src", DI_DEFAULT_PACKAGE, "InjectorForMacros") { - parameter() - parameter(useAsContext = true) - - publicField() - publicField() - publicField() - publicField() - - field(useAsContext = true, - init = GivenExpression("org.jetbrains.kotlin.context.ContextPackage.GlobalContext()")) - - field(useAsContext = true) - } - -private fun generatorForTests() = - generator("compiler/tests", DI_DEFAULT_PACKAGE, "InjectorForTests") { - parameter() - parameter(useAsContext = true) - - publicField() - publicField() - publicField() - publicField() - publicField(name = "additionalCheckerProvider", useAsContext = true) - publicField() - publicField() - - field(init = GivenExpression("org.jetbrains.kotlin.context.ContextPackage.GlobalContext()"), - useAsContext = true) - } - -private fun generatorForBodyResolve() = - generator("compiler/frontend/src", DI_DEFAULT_PACKAGE, "InjectorForBodyResolve") { - parameter(useAsContext = true) - parameter() - parameter(useAsContext = true) - parameter() - - publicField() - } - -private fun generatorForLazyResolve() = - generator("compiler/frontend/src", DI_DEFAULT_PACKAGE, "InjectorForLazyResolve") { - parameter(useAsContext = true) - parameter() - parameter() - parameter(useAsContext = true) - parameter() - - publicField() - - field() - field() - } - -private fun DependencyInjectorGenerator.commonForResolveSessionBased() { - publicParameter(useAsContext = true) - parameter() - parameter() - - publicField() - field() -} - -private fun DependencyInjectorGenerator.commonForJavaTopDownAnalyzer() { - commonForResolveSessionBased() - - parameter(name = "moduleContentScope") - - publicField() - publicField() - publicField() - publicField() - - field( - init = GivenExpression(javaClass().getName() - + ".SERVICE.getInstance(project).create(moduleContentScope)") - ) - - field() - field() - field() - field() - field() - field() - field() - field() - field() - field() - field() - - field(useAsContext = true) - - field(init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) -} - - -private fun generator( - targetSourceRoot: String, - injectorPackageName: String, - injectorClassName: String, - body: DependencyInjectorGenerator.() -> Unit -) = generator(targetSourceRoot, injectorPackageName, injectorClassName, "org.jetbrains.kotlin.generators.injectors.InjectorsPackage", body) diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/generateTestDataForReservedWords.kt b/generators/src/org/jetbrains/kotlin/generators/tests/generateTestDataForReservedWords.kt index 81388f6c63f..5b98d26e66f 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/generateTestDataForReservedWords.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/generateTestDataForReservedWords.kt @@ -17,7 +17,7 @@ package org.jetbrains.kotlin.generators.tests.reservedWords import com.google.dart.compiler.backend.js.ast.JsFunctionScope -import org.jetbrains.kotlin.generators.di.GeneratorsFileUtil.writeFileIfContentChanged +import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.renderer.KeywordStringsGenerated import java.io.File @@ -313,7 +313,7 @@ class TestDataBuilder() { error("Unexpected new testdata file: '$fileName'. It may cause for example because of bug in stdlib.") } - writeFileIfContentChanged(testDataFile, out, false) + GeneratorsFileUtil.writeFileIfContentChanged(testDataFile, out, false) } } } diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGenerator.java b/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGenerator.java index 90534172903..c6d9ccf694e 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGenerator.java +++ b/generators/src/org/jetbrains/kotlin/generators/tests/generator/TestGenerator.java @@ -22,7 +22,7 @@ import com.intellij.util.containers.ContainerUtil; import junit.framework.TestCase; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.generators.di.GeneratorsFileUtil; +import org.jetbrains.kotlin.generators.util.GeneratorsFileUtil; import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; import org.jetbrains.kotlin.test.JetTestUtils; import org.jetbrains.kotlin.test.TestMetadata; diff --git a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GeneratorsFileUtil.java b/generators/src/org/jetbrains/kotlin/generators/util/GeneratorsFileUtil.java similarity index 98% rename from generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GeneratorsFileUtil.java rename to generators/src/org/jetbrains/kotlin/generators/util/GeneratorsFileUtil.java index 485dac3268f..6f8912aee7a 100644 --- a/generators/injector-generator/src/org/jetbrains/kotlin/generators/di/GeneratorsFileUtil.java +++ b/generators/src/org/jetbrains/kotlin/generators/util/GeneratorsFileUtil.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.kotlin.generators.di; +package org.jetbrains.kotlin.generators.util; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; diff --git a/generators/tests/org/jetbrains/kotlin/generators/injectors/GenerateInjectorsTest.java b/generators/tests/org/jetbrains/kotlin/generators/injectors/GenerateInjectorsTest.java deleted file mode 100644 index bc9fbe138b1..00000000000 --- a/generators/tests/org/jetbrains/kotlin/generators/injectors/GenerateInjectorsTest.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.generators.injectors; - -import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.util.text.StringUtil; -import junit.framework.TestCase; -import junit.framework.TestSuite; -import org.jetbrains.kotlin.generators.di.DependencyInjectorGenerator; -import org.junit.Assert; - -import java.io.IOException; - -@SuppressWarnings({"JUnitTestCaseWithNoTests", "JUnitTestCaseWithNonTrivialConstructors"}) -public class GenerateInjectorsTest extends TestCase { - - private final DependencyInjectorGenerator generator; - - public GenerateInjectorsTest(DependencyInjectorGenerator generator) { - super(generator.getInjectorClassName()); - this.generator = generator; - } - - @Override - protected void runTest() throws Throwable { - CharSequence text = generator.generateText(); - String expected = FileUtil.loadFile(generator.getOutputFile(), true); - String expectedText = StringUtil.convertLineSeparators(expected.trim()); - String actualText = StringUtil.convertLineSeparators(text.toString().trim()); - Assert.assertEquals("To fix this problem you need to run GenerateInjectors", expectedText, actualText); - } - - public static TestSuite suite() throws IOException { - TestSuite suite = new TestSuite(); - for (DependencyInjectorGenerator generator : InjectorsPackage.createInjectorGenerators()) { - suite.addTest(new GenerateInjectorsTest(generator)); - } - return suite; - } -} diff --git a/js/js.frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJs.java b/js/js.frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJs.java deleted file mode 100644 index 84b36fcae1a..00000000000 --- a/js/js.frontend/src/org/jetbrains/kotlin/di/InjectorForTopDownAnalyzerForJs.java +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.di; - -import org.jetbrains.kotlin.context.ModuleContext; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap; -import com.intellij.openapi.project.Project; -import org.jetbrains.kotlin.storage.StorageManager; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory; -import org.jetbrains.kotlin.resolve.lazy.ResolveSession; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider; -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzerForTopLevel; -import org.jetbrains.kotlin.js.resolve.KotlinJsCheckerProvider; -import org.jetbrains.kotlin.resolve.validation.SymbolUsageValidator; -import org.jetbrains.kotlin.types.DynamicTypesAllowed; -import org.jetbrains.kotlin.resolve.AnnotationResolver; -import org.jetbrains.kotlin.resolve.calls.CallResolver; -import org.jetbrains.kotlin.resolve.calls.ArgumentTypeResolver; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices; -import org.jetbrains.kotlin.types.expressions.ExpressionTypingComponents; -import org.jetbrains.kotlin.resolve.calls.CallExpressionResolver; -import org.jetbrains.kotlin.types.expressions.ControlStructureTypingUtils; -import org.jetbrains.kotlin.resolve.DescriptorResolver; -import org.jetbrains.kotlin.resolve.DelegatedPropertyResolver; -import org.jetbrains.kotlin.resolve.TypeResolver; -import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver; -import org.jetbrains.kotlin.resolve.TypeResolver.FlexibleTypeCapabilitiesProvider; -import org.jetbrains.kotlin.context.TypeLazinessToken; -import org.jetbrains.kotlin.types.expressions.ForLoopConventionsChecker; -import org.jetbrains.kotlin.types.expressions.FakeCallResolver; -import org.jetbrains.kotlin.resolve.FunctionDescriptorResolver; -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer; -import org.jetbrains.kotlin.types.expressions.MultiDeclarationResolver; -import org.jetbrains.kotlin.builtins.ReflectionTypes; -import org.jetbrains.kotlin.types.expressions.ValueParameterResolver; -import org.jetbrains.kotlin.resolve.StatementFilter; -import org.jetbrains.kotlin.resolve.calls.CallCompleter; -import org.jetbrains.kotlin.resolve.calls.CandidateResolver; -import org.jetbrains.kotlin.resolve.calls.tasks.TaskPrioritizer; -import org.jetbrains.kotlin.psi.JetImportsFactory; -import org.jetbrains.kotlin.resolve.lazy.LazyDeclarationResolver; -import org.jetbrains.kotlin.resolve.lazy.DeclarationScopeProviderImpl; -import org.jetbrains.kotlin.resolve.ScriptBodyResolver; -import org.jetbrains.kotlin.resolve.lazy.ScopeProvider.AdditionalFileScopeProvider; -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer; -import org.jetbrains.kotlin.resolve.BodyResolver; -import org.jetbrains.kotlin.resolve.ControlFlowAnalyzer; -import org.jetbrains.kotlin.resolve.DeclarationsChecker; -import org.jetbrains.kotlin.resolve.ModifiersChecker; -import org.jetbrains.kotlin.resolve.FunctionAnalyzerExtension; -import org.jetbrains.kotlin.resolve.DeclarationResolver; -import org.jetbrains.kotlin.resolve.OverloadResolver; -import org.jetbrains.kotlin.resolve.OverrideResolver; -import org.jetbrains.kotlin.resolve.varianceChecker.VarianceChecker; -import org.jetbrains.annotations.NotNull; -import javax.annotation.PreDestroy; - -/* This file is generated by org.jetbrains.kotlin.generators.injectors.InjectorsPackage. DO NOT EDIT! */ -@SuppressWarnings("all") -public class InjectorForTopDownAnalyzerForJs { - - private final ModuleContext moduleContext; - private final KotlinBuiltIns kotlinBuiltIns; - private final ModuleDescriptor moduleDescriptor; - private final PlatformToKotlinClassMap platformToKotlinClassMap; - private final Project project; - private final StorageManager storageManager; - private final BindingTrace bindingTrace; - private final DeclarationProviderFactory declarationProviderFactory; - private final ResolveSession resolveSession; - private final ScopeProvider scopeProvider; - private final LazyTopDownAnalyzerForTopLevel lazyTopDownAnalyzerForTopLevel; - private final KotlinJsCheckerProvider kotlinJsCheckerProvider; - private final SymbolUsageValidator symbolUsageValidator; - private final DynamicTypesAllowed dynamicTypesAllowed; - private final AnnotationResolver annotationResolver; - private final CallResolver callResolver; - private final ArgumentTypeResolver argumentTypeResolver; - private final ExpressionTypingServices expressionTypingServices; - private final ExpressionTypingComponents expressionTypingComponents; - private final CallExpressionResolver callExpressionResolver; - private final ControlStructureTypingUtils controlStructureTypingUtils; - private final DescriptorResolver descriptorResolver; - private final DelegatedPropertyResolver delegatedPropertyResolver; - private final TypeResolver typeResolver; - private final QualifiedExpressionResolver qualifiedExpressionResolver; - private final FlexibleTypeCapabilitiesProvider flexibleTypeCapabilitiesProvider; - private final TypeLazinessToken typeLazinessToken; - private final ForLoopConventionsChecker forLoopConventionsChecker; - private final FakeCallResolver fakeCallResolver; - private final FunctionDescriptorResolver functionDescriptorResolver; - private final LocalClassifierAnalyzer localClassifierAnalyzer; - private final MultiDeclarationResolver multiDeclarationResolver; - private final ReflectionTypes reflectionTypes; - private final ValueParameterResolver valueParameterResolver; - private final StatementFilter statementFilter; - private final CallCompleter callCompleter; - private final CandidateResolver candidateResolver; - private final TaskPrioritizer taskPrioritizer; - private final JetImportsFactory jetImportsFactory; - private final LazyDeclarationResolver lazyDeclarationResolver; - private final DeclarationScopeProviderImpl declarationScopeProvider; - private final ScriptBodyResolver scriptBodyResolver; - private final AdditionalFileScopeProvider additionalFileScopeProvider; - private final LazyTopDownAnalyzer lazyTopDownAnalyzer; - private final BodyResolver bodyResolver; - private final ControlFlowAnalyzer controlFlowAnalyzer; - private final DeclarationsChecker declarationsChecker; - private final ModifiersChecker modifiersChecker; - private final FunctionAnalyzerExtension functionAnalyzerExtension; - private final DeclarationResolver declarationResolver; - private final OverloadResolver overloadResolver; - private final OverrideResolver overrideResolver; - private final VarianceChecker varianceChecker; - - public InjectorForTopDownAnalyzerForJs( - @NotNull ModuleContext moduleContext, - @NotNull BindingTrace bindingTrace, - @NotNull DeclarationProviderFactory declarationProviderFactory - ) { - this.moduleContext = moduleContext; - this.kotlinBuiltIns = moduleContext.getBuiltIns(); - this.moduleDescriptor = moduleContext.getModule(); - this.platformToKotlinClassMap = moduleContext.getPlatformToKotlinClassMap(); - this.project = moduleContext.getProject(); - this.storageManager = moduleContext.getStorageManager(); - this.bindingTrace = bindingTrace; - this.declarationProviderFactory = declarationProviderFactory; - this.resolveSession = new ResolveSession(project, getModuleContext(), moduleDescriptor, declarationProviderFactory, bindingTrace); - this.scopeProvider = new ScopeProvider(getResolveSession()); - this.lazyTopDownAnalyzerForTopLevel = new LazyTopDownAnalyzerForTopLevel(); - this.kotlinJsCheckerProvider = KotlinJsCheckerProvider.INSTANCE$; - this.symbolUsageValidator = kotlinJsCheckerProvider.getSymbolUsageValidator(); - this.dynamicTypesAllowed = new DynamicTypesAllowed(); - this.annotationResolver = new AnnotationResolver(); - this.callResolver = new CallResolver(); - this.argumentTypeResolver = new ArgumentTypeResolver(); - this.expressionTypingComponents = new ExpressionTypingComponents(); - this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents); - this.callExpressionResolver = new CallExpressionResolver(callResolver, kotlinBuiltIns); - this.controlStructureTypingUtils = new ControlStructureTypingUtils(callResolver); - this.descriptorResolver = new DescriptorResolver(); - this.delegatedPropertyResolver = new DelegatedPropertyResolver(); - this.qualifiedExpressionResolver = new QualifiedExpressionResolver(); - this.flexibleTypeCapabilitiesProvider = new FlexibleTypeCapabilitiesProvider(); - this.typeLazinessToken = new TypeLazinessToken(); - this.typeResolver = new TypeResolver(annotationResolver, qualifiedExpressionResolver, moduleDescriptor, flexibleTypeCapabilitiesProvider, storageManager, typeLazinessToken, dynamicTypesAllowed); - this.forLoopConventionsChecker = new ForLoopConventionsChecker(); - this.fakeCallResolver = new FakeCallResolver(project, callResolver); - this.functionDescriptorResolver = new FunctionDescriptorResolver(typeResolver, descriptorResolver, annotationResolver, storageManager, expressionTypingServices, kotlinBuiltIns); - this.localClassifierAnalyzer = new LocalClassifierAnalyzer(descriptorResolver, functionDescriptorResolver, typeResolver, annotationResolver); - this.multiDeclarationResolver = new MultiDeclarationResolver(fakeCallResolver, descriptorResolver, typeResolver, symbolUsageValidator); - this.reflectionTypes = new ReflectionTypes(moduleDescriptor); - this.valueParameterResolver = new ValueParameterResolver(kotlinJsCheckerProvider, expressionTypingServices); - this.statementFilter = new StatementFilter(); - this.candidateResolver = new CandidateResolver(); - this.callCompleter = new CallCompleter(argumentTypeResolver, candidateResolver); - this.taskPrioritizer = new TaskPrioritizer(storageManager); - this.jetImportsFactory = new JetImportsFactory(); - this.lazyDeclarationResolver = new LazyDeclarationResolver(getModuleContext(), bindingTrace); - this.declarationScopeProvider = new DeclarationScopeProviderImpl(lazyDeclarationResolver); - this.scriptBodyResolver = new ScriptBodyResolver(); - this.additionalFileScopeProvider = new AdditionalFileScopeProvider(); - this.lazyTopDownAnalyzer = new LazyTopDownAnalyzer(); - this.bodyResolver = new BodyResolver(); - this.controlFlowAnalyzer = new ControlFlowAnalyzer(); - this.declarationsChecker = new DeclarationsChecker(); - this.modifiersChecker = new ModifiersChecker(bindingTrace, kotlinJsCheckerProvider); - this.functionAnalyzerExtension = new FunctionAnalyzerExtension(); - this.declarationResolver = new DeclarationResolver(); - this.overloadResolver = new OverloadResolver(); - this.overrideResolver = new OverrideResolver(); - this.varianceChecker = new VarianceChecker(bindingTrace); - - this.resolveSession.setAnnotationResolve(annotationResolver); - this.resolveSession.setDescriptorResolver(descriptorResolver); - this.resolveSession.setFunctionDescriptorResolver(functionDescriptorResolver); - this.resolveSession.setJetImportFactory(jetImportsFactory); - this.resolveSession.setLazyDeclarationResolver(lazyDeclarationResolver); - this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver); - this.resolveSession.setScopeProvider(scopeProvider); - this.resolveSession.setScriptBodyResolver(scriptBodyResolver); - this.resolveSession.setTypeResolver(typeResolver); - - scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider); - scopeProvider.setDeclarationScopeProvider(declarationScopeProvider); - - this.lazyTopDownAnalyzerForTopLevel.setKotlinCodeAnalyzer(resolveSession); - this.lazyTopDownAnalyzerForTopLevel.setLazyTopDownAnalyzer(lazyTopDownAnalyzer); - - annotationResolver.setCallResolver(callResolver); - annotationResolver.setStorageManager(storageManager); - annotationResolver.setTypeResolver(typeResolver); - - callResolver.setAdditionalCheckerProvider(kotlinJsCheckerProvider); - callResolver.setArgumentTypeResolver(argumentTypeResolver); - callResolver.setCallCompleter(callCompleter); - callResolver.setCandidateResolver(candidateResolver); - callResolver.setExpressionTypingServices(expressionTypingServices); - callResolver.setTaskPrioritizer(taskPrioritizer); - callResolver.setTypeResolver(typeResolver); - - argumentTypeResolver.setBuiltIns(kotlinBuiltIns); - argumentTypeResolver.setExpressionTypingServices(expressionTypingServices); - argumentTypeResolver.setTypeResolver(typeResolver); - - expressionTypingServices.setStatementFilter(statementFilter); - - expressionTypingComponents.setAdditionalCheckerProvider(kotlinJsCheckerProvider); - expressionTypingComponents.setAnnotationResolver(annotationResolver); - expressionTypingComponents.setBuiltIns(kotlinBuiltIns); - expressionTypingComponents.setCallExpressionResolver(callExpressionResolver); - expressionTypingComponents.setCallResolver(callResolver); - expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils); - expressionTypingComponents.setDescriptorResolver(descriptorResolver); - expressionTypingComponents.setDynamicTypesSettings(dynamicTypesAllowed); - expressionTypingComponents.setExpressionTypingServices(expressionTypingServices); - expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker); - expressionTypingComponents.setFunctionDescriptorResolver(functionDescriptorResolver); - expressionTypingComponents.setGlobalContext(moduleContext); - expressionTypingComponents.setLocalClassifierAnalyzer(localClassifierAnalyzer); - expressionTypingComponents.setMultiDeclarationResolver(multiDeclarationResolver); - expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap); - expressionTypingComponents.setReflectionTypes(reflectionTypes); - expressionTypingComponents.setSymbolUsageValidator(symbolUsageValidator); - expressionTypingComponents.setTypeResolver(typeResolver); - expressionTypingComponents.setValueParameterResolver(valueParameterResolver); - - callExpressionResolver.setExpressionTypingServices(expressionTypingServices); - - descriptorResolver.setAnnotationResolver(annotationResolver); - descriptorResolver.setBuiltIns(kotlinBuiltIns); - descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - descriptorResolver.setExpressionTypingServices(expressionTypingServices); - descriptorResolver.setStorageManager(storageManager); - descriptorResolver.setTypeResolver(typeResolver); - - delegatedPropertyResolver.setAdditionalCheckerProvider(kotlinJsCheckerProvider); - delegatedPropertyResolver.setBuiltIns(kotlinBuiltIns); - delegatedPropertyResolver.setCallResolver(callResolver); - delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices); - - qualifiedExpressionResolver.setSymbolUsageValidator(symbolUsageValidator); - - forLoopConventionsChecker.setBuiltIns(kotlinBuiltIns); - forLoopConventionsChecker.setFakeCallResolver(fakeCallResolver); - forLoopConventionsChecker.setSymbolUsageValidator(symbolUsageValidator); - - candidateResolver.setArgumentTypeResolver(argumentTypeResolver); - - jetImportsFactory.setProject(project); - - lazyDeclarationResolver.setDeclarationScopeProvider(declarationScopeProvider); - lazyDeclarationResolver.setTopLevelDescriptorProvider(resolveSession); - - declarationScopeProvider.setFileScopeProvider(scopeProvider); - - scriptBodyResolver.setAdditionalCheckerProvider(kotlinJsCheckerProvider); - scriptBodyResolver.setExpressionTypingServices(expressionTypingServices); - - lazyTopDownAnalyzer.setBodyResolver(bodyResolver); - lazyTopDownAnalyzer.setDeclarationResolver(declarationResolver); - lazyTopDownAnalyzer.setDeclarationScopeProvider(declarationScopeProvider); - lazyTopDownAnalyzer.setFileScopeProvider(scopeProvider); - lazyTopDownAnalyzer.setLazyDeclarationResolver(lazyDeclarationResolver); - lazyTopDownAnalyzer.setModuleDescriptor(moduleDescriptor); - lazyTopDownAnalyzer.setOverloadResolver(overloadResolver); - lazyTopDownAnalyzer.setOverrideResolver(overrideResolver); - lazyTopDownAnalyzer.setTopLevelDescriptorProvider(resolveSession); - lazyTopDownAnalyzer.setTrace(bindingTrace); - lazyTopDownAnalyzer.setVarianceChecker(varianceChecker); - - bodyResolver.setAdditionalCheckerProvider(kotlinJsCheckerProvider); - bodyResolver.setAnnotationResolver(annotationResolver); - bodyResolver.setCallResolver(callResolver); - bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer); - bodyResolver.setDeclarationsChecker(declarationsChecker); - bodyResolver.setDelegatedPropertyResolver(delegatedPropertyResolver); - bodyResolver.setExpressionTypingServices(expressionTypingServices); - bodyResolver.setFunctionAnalyzerExtension(functionAnalyzerExtension); - bodyResolver.setScriptBodyResolverResolver(scriptBodyResolver); - bodyResolver.setTrace(bindingTrace); - bodyResolver.setValueParameterResolver(valueParameterResolver); - - controlFlowAnalyzer.setTrace(bindingTrace); - - declarationsChecker.setDescriptorResolver(descriptorResolver); - declarationsChecker.setModifiersChecker(modifiersChecker); - declarationsChecker.setTrace(bindingTrace); - - functionAnalyzerExtension.setTrace(bindingTrace); - - declarationResolver.setAnnotationResolver(annotationResolver); - declarationResolver.setTrace(bindingTrace); - - overloadResolver.setTrace(bindingTrace); - - overrideResolver.setTrace(bindingTrace); - - } - - @PreDestroy - public void destroy() { - } - - public ModuleContext getModuleContext() { - return this.moduleContext; - } - - public ResolveSession getResolveSession() { - return this.resolveSession; - } - - public LazyTopDownAnalyzerForTopLevel getLazyTopDownAnalyzerForTopLevel() { - return this.lazyTopDownAnalyzerForTopLevel; - } - -}