From 5dcf9df6abff7243d670726f037eedc209b753fc Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 9 Feb 2015 21:45:38 +0300 Subject: [PATCH] Drop InjectorForJavaDescriptorResolver and dependencies Use InjectorForLazyResolveWithJava instead, it does essentially the same --- .../di/InjectorForJavaDescriptorResolver.java | 156 ------------------ ...InjectorForJavaDescriptorResolverUtil.java | 43 ----- .../di/InjectorForLazyResolveWithJava.java | 12 +- .../InjectorForLazyResolveWithJavaUtil.java | 62 +++++++ .../load/java/JavaClassFinderPostConstruct.kt | 17 -- .../DeclarationProviderFactoryService.kt | 4 +- .../AbstractSdkAnnotationsValidityTest.java | 18 +- .../jvm/compiler/LoadDescriptorUtil.java | 12 +- ...solveDescriptorsFromExternalLibraries.java | 10 +- .../resolve/JetExpectedResolveDataUtil.java | 6 +- .../kotlin/types/JetTypeCheckerTest.java | 8 +- .../generators/injectors/GenerateInjectors.kt | 38 +---- 12 files changed, 100 insertions(+), 286 deletions(-) delete mode 100644 compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForJavaDescriptorResolver.java delete mode 100644 compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForJavaDescriptorResolverUtil.java create mode 100644 compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJavaUtil.java diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForJavaDescriptorResolver.java deleted file mode 100644 index 59b23439551..00000000000 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForJavaDescriptorResolver.java +++ /dev/null @@ -1,156 +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.resolve.BindingTrace; -import org.jetbrains.kotlin.context.GlobalContextImpl; -import org.jetbrains.kotlin.storage.LockBasedStorageManager; -import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; -import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver; -import org.jetbrains.kotlin.load.java.JavaClassFinderImpl; -import com.intellij.psi.search.GlobalSearchScope; -import org.jetbrains.kotlin.load.java.components.TraceBasedExternalSignatureResolver; -import org.jetbrains.kotlin.load.java.components.TraceBasedJavaResolverCache; -import org.jetbrains.kotlin.load.java.components.TraceBasedErrorReporter; -import org.jetbrains.kotlin.load.java.components.PsiBasedMethodSignatureChecker; -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.JavaDescriptorResolverPostConstruct; -import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder; -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 InjectorForJavaDescriptorResolver { - - private final Project project; - private final BindingTrace bindingTrace; - private final GlobalContextImpl globalContext; - private final LockBasedStorageManager lockBasedStorageManager; - private final ModuleDescriptorImpl module; - private final JavaDescriptorResolver javaDescriptorResolver; - private final JavaClassFinderImpl javaClassFinder; - private final GlobalSearchScope globalSearchScope; - private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver; - private final TraceBasedJavaResolverCache traceBasedJavaResolverCache; - private final TraceBasedErrorReporter traceBasedErrorReporter; - private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker; - private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver; - private final JavaPropertyInitializerEvaluatorImpl javaPropertyInitializerEvaluator; - private final SamConversionResolverImpl samConversionResolver; - private final JavaSourceElementFactoryImpl javaSourceElementFactory; - private final SingleModuleClassResolver singleModuleClassResolver; - private final JavaDescriptorResolverPostConstruct javaDescriptorResolverPostConstruct; - private final VirtualFileFinder virtualFileFinder; - 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 InjectorForJavaDescriptorResolver( - @NotNull Project project, - @NotNull BindingTrace bindingTrace - ) { - this.project = project; - this.bindingTrace = bindingTrace; - this.globalContext = org.jetbrains.kotlin.context.ContextPackage.GlobalContext(); - this.lockBasedStorageManager = globalContext.getStorageManager(); - this.module = org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM.createJavaModule(""); - this.javaClassFinder = new JavaClassFinderImpl(); - this.virtualFileFinder = org.jetbrains.kotlin.load.kotlin.VirtualFileFinder.SERVICE.getInstance(project); - this.traceBasedErrorReporter = new TraceBasedErrorReporter(); - this.deserializedDescriptorResolver = new DeserializedDescriptorResolver(traceBasedErrorReporter); - this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver(); - this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver(); - this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker(); - this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache(); - this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl(); - this.samConversionResolver = SamConversionResolverImpl.INSTANCE$; - this.javaSourceElementFactory = new JavaSourceElementFactoryImpl(); - this.singleModuleClassResolver = new SingleModuleClassResolver(); - this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, singleModuleClassResolver); - this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule()); - this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule()); - this.globalSearchScope = com.intellij.psi.search.GlobalSearchScope.allScope(project); - this.javaDescriptorResolverPostConstruct = new JavaDescriptorResolverPostConstruct(); - this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver); - this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(getModule(), lockBasedStorageManager, virtualFileFinder, traceBasedErrorReporter); - this.deserializationComponentsForJava = new DeserializationComponentsForJava(lockBasedStorageManager, getModule(), javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider); - - this.javaClassFinder.setComponentPostConstruct(javaDescriptorResolverPostConstruct); - this.javaClassFinder.setProject(project); - this.javaClassFinder.setScope(globalSearchScope); - - traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); - traceBasedExternalSignatureResolver.setProject(project); - traceBasedExternalSignatureResolver.setTrace(bindingTrace); - - traceBasedJavaResolverCache.setTrace(bindingTrace); - - traceBasedErrorReporter.setTrace(bindingTrace); - - psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); - psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver); - - singleModuleClassResolver.setResolver(javaDescriptorResolver); - - javaDescriptorResolverPostConstruct.setModule(module); - javaDescriptorResolverPostConstruct.setProject(project); - javaDescriptorResolverPostConstruct.setTrace(bindingTrace); - - deserializedDescriptorResolver.setComponents(deserializationComponentsForJava); - - javaClassFinder.initialize(); - - javaDescriptorResolverPostConstruct.postCreate(); - - } - - @PreDestroy - public void destroy() { - } - - public GlobalContextImpl getGlobalContext() { - return this.globalContext; - } - - public ModuleDescriptorImpl getModule() { - return this.module; - } - - public JavaDescriptorResolver getJavaDescriptorResolver() { - return this.javaDescriptorResolver; - } - - public JavaClassFinderImpl getJavaClassFinder() { - return this.javaClassFinder; - } - -} diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForJavaDescriptorResolverUtil.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForJavaDescriptorResolverUtil.java deleted file mode 100644 index f073d2570f7..00000000000 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForJavaDescriptorResolverUtil.java +++ /dev/null @@ -1,43 +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.annotations.NotNull; -import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; -import org.jetbrains.kotlin.resolve.BindingTrace; -import org.jetbrains.kotlin.builtins.KotlinBuiltIns; - -public class InjectorForJavaDescriptorResolverUtil { - @NotNull - public static InjectorForJavaDescriptorResolver create( - @NotNull Project project, - @NotNull BindingTrace bindingTrace, - boolean dependOnBuiltins - ) { - InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(project, bindingTrace); - ModuleDescriptorImpl module = injector.getModule(); - module.initialize(injector.getJavaDescriptorResolver().getPackageFragmentProvider()); - module.addDependencyOnModule(module); - if (dependOnBuiltins) { - module.addDependencyOnModule(KotlinBuiltIns.getInstance().getBuiltInsModule()); - } - module.seal(); - - return injector; - } -} diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java index 510318d44ac..abf22440811 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJava.java @@ -172,7 +172,7 @@ public class InjectorForLazyResolveWithJava { this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl(); this.samConversionResolver = SamConversionResolverImpl.INSTANCE$; this.javaSourceElementFactory = new JavaSourceElementFactoryImpl(); - this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, moduleClassResolver); + this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, lazyResolveBasedCache, javaPropertyInitializerEvaluator, samConversionResolver, javaSourceElementFactory, moduleClassResolver); this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, module); this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, module); this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider(); @@ -220,9 +220,9 @@ public class InjectorForLazyResolveWithJava { scopeProvider.setAdditionalFileScopesProvider(additionalFileScopeProvider); scopeProvider.setDeclarationScopeProvider(declarationScopeProvider); - javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct); - javaClassFinder.setProject(project); - javaClassFinder.setScope(moduleContentScope); + this.javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct); + this.javaClassFinder.setProject(project); + this.javaClassFinder.setScope(moduleContentScope); traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver); traceBasedExternalSignatureResolver.setProject(project); @@ -325,4 +325,8 @@ public class InjectorForLazyResolveWithJava { return this.javaDescriptorResolver; } + public JavaClassFinderImpl getJavaClassFinder() { + return this.javaClassFinder; + } + } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJavaUtil.java b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJavaUtil.java new file mode 100644 index 00000000000..93c3285cf90 --- /dev/null +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/di/InjectorForLazyResolveWithJavaUtil.java @@ -0,0 +1,62 @@ +/* + * 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 com.intellij.psi.search.GlobalSearchScope; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.kotlin.builtins.KotlinBuiltIns; +import org.jetbrains.kotlin.context.ContextPackage; +import org.jetbrains.kotlin.context.GlobalContextImpl; +import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; +import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver; +import org.jetbrains.kotlin.psi.JetFile; +import org.jetbrains.kotlin.resolve.BindingTrace; +import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM; +import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory; +import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactoryService; + +import java.util.Collections; + +public class InjectorForLazyResolveWithJavaUtil { + @NotNull + public static InjectorForLazyResolveWithJava create(@NotNull Project project, @NotNull BindingTrace trace, boolean dependOnBuiltins) { + ModuleDescriptorImpl module = TopDownAnalyzerFacadeForJVM.createJavaModule(""); + + GlobalSearchScope moduleContentScope = GlobalSearchScope.allScope(project); + GlobalContextImpl globalContext = ContextPackage.GlobalContext(); + DeclarationProviderFactory declarationProviderFactory = DeclarationProviderFactoryService.createDeclarationProviderFactory( + project, globalContext.getStorageManager(), Collections.emptyList(), moduleContentScope + ); + SingleModuleClassResolver resolver = new SingleModuleClassResolver(); + + InjectorForLazyResolveWithJava injector = new InjectorForLazyResolveWithJava( + project, globalContext, trace, module, declarationProviderFactory, moduleContentScope, resolver + ); + + resolver.setResolver(injector.getJavaDescriptorResolver()); + + module.addDependencyOnModule(module); + module.initialize(injector.getJavaDescriptorResolver().getPackageFragmentProvider()); + if (dependOnBuiltins) { + module.addDependencyOnModule(KotlinBuiltIns.getInstance().getBuiltInsModule()); + } + module.seal(); + + return injector; + } +} diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderPostConstruct.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderPostConstruct.kt index aac662b3a1e..d3caa13dec6 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderPostConstruct.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderPostConstruct.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.resolve.jvm import com.intellij.openapi.project.Project import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer -import org.jetbrains.kotlin.descriptors.ModuleDescriptor import javax.inject.Inject import javax.annotation.PostConstruct import org.jetbrains.kotlin.resolve.BindingTrace @@ -42,19 +41,3 @@ public class JavaLazyAnalyzerPostConstruct : JavaClassFinderPostConstruct() { CodeAnalyzerInitializer.getInstance(project!!).initialize(trace!!, codeAnalyzer!!.getModuleDescriptor(), codeAnalyzer) } } - -public class JavaDescriptorResolverPostConstruct : JavaClassFinderPostConstruct() { - public var project: Project? = null - [Inject] set - - public var trace: BindingTrace? = null - [Inject] set - - public var module: ModuleDescriptor? = null - [Inject] set - - [PostConstruct] override fun postCreate() { - CodeAnalyzerInitializer.getInstance(project!!).initialize(trace!!, module!!, null) - } -} - diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/declarations/DeclarationProviderFactoryService.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/declarations/DeclarationProviderFactoryService.kt index 06fd2dcc9b8..30eeb4108c2 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/declarations/DeclarationProviderFactoryService.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/lazy/declarations/DeclarationProviderFactoryService.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.storage.StorageManager import com.intellij.openapi.vfs.VirtualFile import java.util.HashSet +import kotlin.platform.platformStatic public abstract class DeclarationProviderFactoryService { @@ -35,8 +36,7 @@ public abstract class DeclarationProviderFactoryService { ): DeclarationProviderFactory class object { - - public fun createDeclarationProviderFactory( + public platformStatic fun createDeclarationProviderFactory( project: Project, storageManager: StorageManager, syntheticFiles: Collection, diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSdkAnnotationsValidityTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSdkAnnotationsValidityTest.java index 8e90c347b86..87c14ef82df 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSdkAnnotationsValidityTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSdkAnnotationsValidityTest.java @@ -25,8 +25,8 @@ import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport; import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolver; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolverUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava; import org.jetbrains.kotlin.load.java.JavaBindingContext; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.platform.JavaToKotlinClassMap; @@ -75,17 +75,17 @@ public abstract class AbstractSdkAnnotationsValidityTest extends UsefulTestCase JetCoreEnvironment commonEnvironment = createEnvironment(parentDisposable); BindingTrace trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(); - InjectorForJavaDescriptorResolver injector = - InjectorForJavaDescriptorResolverUtil.create(commonEnvironment.getProject(), trace, false); + InjectorForLazyResolveWithJava injector = + InjectorForLazyResolveWithJavaUtil.create(commonEnvironment.getProject(), trace, false); + ModuleDescriptor module = injector.getResolveSession().getModuleDescriptor(); - BindingContext bindingContext = trace.getBindingContext(); - - AlternativeSignatureErrorFindingVisitor visitor = new AlternativeSignatureErrorFindingVisitor(bindingContext, errors); + AlternativeSignatureErrorFindingVisitor visitor = + new AlternativeSignatureErrorFindingVisitor(trace.getBindingContext(), errors); int chunkStart = chunkIndex * CLASSES_IN_CHUNK; for (FqName javaClass : affectedClasses.subList(chunkStart, Math.min(chunkStart + CLASSES_IN_CHUNK, affectedClasses.size()))) { - ClassDescriptor topLevelClass = resolveTopLevelClass(injector.getModule(), javaClass); - PackageViewDescriptor topLevelPackage = injector.getModule().getPackage(javaClass); + ClassDescriptor topLevelClass = resolveTopLevelClass(module, javaClass); + PackageViewDescriptor topLevelPackage = module.getPackage(javaClass); if (topLevelClass == null) { continue; } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadDescriptorUtil.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadDescriptorUtil.java index 5648a883fda..a8d4e500a4f 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadDescriptorUtil.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/LoadDescriptorUtil.java @@ -33,10 +33,10 @@ import org.jetbrains.kotlin.codegen.GenerationUtils; import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime; import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.config.CompilerConfiguration; +import org.jetbrains.kotlin.descriptors.ModuleDescriptor; import org.jetbrains.kotlin.descriptors.PackageViewDescriptor; -import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolver; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolverUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.JetFile; @@ -93,9 +93,9 @@ public final class LoadDescriptorUtil { JetCoreEnvironment jetCoreEnvironment = JetCoreEnvironment.createForTests(disposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES); BindingTrace trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(); - InjectorForJavaDescriptorResolver injector = - InjectorForJavaDescriptorResolverUtil.create(jetCoreEnvironment.getProject(), trace, true); - ModuleDescriptorImpl module = injector.getModule(); + InjectorForLazyResolveWithJava injector = + InjectorForLazyResolveWithJavaUtil.create(jetCoreEnvironment.getProject(), trace, true); + ModuleDescriptor module = injector.getResolveSession().getModuleDescriptor(); PackageViewDescriptor packageView = module.getPackage(TEST_PACKAGE_FQNAME); assert packageView != null; diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java index 8d41a96d2e7..bf412a68775 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/longTest/ResolveDescriptorsFromExternalLibraries.java @@ -31,8 +31,8 @@ import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment; import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.descriptors.ClassDescriptor; import org.jetbrains.kotlin.descriptors.ModuleDescriptor; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolver; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolverUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.resolve.BindingTraceContext; import org.jetbrains.kotlin.test.ConfigurationKind; @@ -179,9 +179,9 @@ public class ResolveDescriptorsFromExternalLibraries { } } - InjectorForJavaDescriptorResolver injector = - InjectorForJavaDescriptorResolverUtil.create(jetCoreEnvironment.getProject(), new BindingTraceContext(), false); - ModuleDescriptor moduleDescriptor = injector.getModule(); + InjectorForLazyResolveWithJava injector = + InjectorForLazyResolveWithJavaUtil.create(jetCoreEnvironment.getProject(), new BindingTraceContext(), false); + ModuleDescriptor moduleDescriptor = injector.getResolveSession().getModuleDescriptor(); boolean hasErrors; try { diff --git a/compiler/tests/org/jetbrains/kotlin/resolve/JetExpectedResolveDataUtil.java b/compiler/tests/org/jetbrains/kotlin/resolve/JetExpectedResolveDataUtil.java index 5191db4e264..aa3ee9e14c4 100644 --- a/compiler/tests/org/jetbrains/kotlin/resolve/JetExpectedResolveDataUtil.java +++ b/compiler/tests/org/jetbrains/kotlin/resolve/JetExpectedResolveDataUtil.java @@ -22,8 +22,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport; import org.jetbrains.kotlin.descriptors.*; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolver; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolverUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava; import org.jetbrains.kotlin.di.InjectorForTests; import org.jetbrains.kotlin.load.java.structure.JavaClass; import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl; @@ -117,7 +117,7 @@ public class JetExpectedResolveDataUtil { @NotNull private static PsiClass findClass(String qualifiedName, Project project) { BindingTraceContext trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(); - InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(project, trace, false); + InjectorForLazyResolveWithJava injector = InjectorForLazyResolveWithJavaUtil.create(project, trace, false); JavaClass javaClass = injector.getJavaClassFinder().findClass(ClassId.topLevel(new FqName(qualifiedName))); Assert.assertNotNull("Class wasn't found: " + qualifiedName, javaClass); assertInstanceOf(javaClass, JavaClassImpl.class); diff --git a/compiler/tests/org/jetbrains/kotlin/types/JetTypeCheckerTest.java b/compiler/tests/org/jetbrains/kotlin/types/JetTypeCheckerTest.java index 8cfd97387fe..8c320b19a5e 100644 --- a/compiler/tests/org/jetbrains/kotlin/types/JetTypeCheckerTest.java +++ b/compiler/tests/org/jetbrains/kotlin/types/JetTypeCheckerTest.java @@ -27,8 +27,8 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor; import org.jetbrains.kotlin.descriptors.PackageViewDescriptor; import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor; import org.jetbrains.kotlin.descriptors.impl.ReceiverParameterDescriptorImpl; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolver; -import org.jetbrains.kotlin.di.InjectorForJavaDescriptorResolverUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJavaUtil; +import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava; import org.jetbrains.kotlin.di.InjectorForTests; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.JetExpression; @@ -593,8 +593,8 @@ public class JetTypeCheckerTest extends JetLiteFixture { WritableScopeImpl writableScope = new WritableScopeImpl( scope, scope.getContainingDeclaration(), RedeclarationHandler.DO_NOTHING, "JetTypeCheckerTest.addImports"); BindingTraceContext trace = new CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(); - InjectorForJavaDescriptorResolver injector = InjectorForJavaDescriptorResolverUtil.create(getProject(), trace, true); - ModuleDescriptor module = injector.getModule(); + InjectorForLazyResolveWithJava injector = InjectorForLazyResolveWithJavaUtil.create(getProject(), trace, true); + ModuleDescriptor module = injector.getResolveSession().getModuleDescriptor(); for (ImportPath defaultImport : module.getDefaultImports()) { FqName fqName = defaultImport.fqnPart(); if (defaultImport.isAllUnder()) { diff --git a/generators/src/org/jetbrains/kotlin/generators/injectors/GenerateInjectors.kt b/generators/src/org/jetbrains/kotlin/generators/injectors/GenerateInjectors.kt index f01675d18af..66f0ee35f05 100644 --- a/generators/src/org/jetbrains/kotlin/generators/injectors/GenerateInjectors.kt +++ b/generators/src/org/jetbrains/kotlin/generators/injectors/GenerateInjectors.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.generators.injectors import com.intellij.openapi.project.Project import org.jetbrains.kotlin.context.GlobalContext -import org.jetbrains.kotlin.context.GlobalContextImpl import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.resolve.* @@ -40,20 +39,17 @@ import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver import org.jetbrains.kotlin.load.kotlin.DeserializationComponentsForJava import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory -import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.load.kotlin.KotlinJvmCheckerProvider import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer import org.jetbrains.kotlin.load.java.JavaFlexibleTypeCapabilitiesProvider import org.jetbrains.kotlin.context.LazyResolveToken import org.jetbrains.kotlin.resolve.jvm.JavaLazyAnalyzerPostConstruct -import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolverPostConstruct import org.jetbrains.kotlin.resolve.lazy.ScopeProvider import org.jetbrains.kotlin.js.resolve.KotlinJsCheckerProvider import org.jetbrains.kotlin.types.DynamicTypesAllowed import org.jetbrains.kotlin.types.DynamicTypesSettings import org.jetbrains.kotlin.resolve.lazy.NoTopLevelDescriptorProvider import org.jetbrains.kotlin.resolve.lazy.NoFileScopeProvider -import org.jetbrains.kotlin.types.expressions.LocalClassifierAnalyzer import org.jetbrains.kotlin.types.expressions.LocalClassDescriptorManager import org.jetbrains.kotlin.types.expressions.DeclarationScopeProviderForLocalClassifierAnalyzer import org.jetbrains.kotlin.types.expressions.LocalLazyDeclarationResolver @@ -79,7 +75,6 @@ public fun createInjectorGenerators(): List = generatorForLazyTopDownAnalyzerBasic(), generatorForLazyLocalClassifierAnalyzer(), generatorForTopDownAnalyzerForJvm(), - generatorForJavaDescriptorResolver(), generatorForLazyResolveWithJava(), generatorForTopDownAnalyzerForJs(), generatorForMacro(), @@ -147,42 +142,11 @@ private fun generatorForTopDownAnalyzerForJvm() = commonForJavaTopDownAnalyzer() } -private fun generatorForJavaDescriptorResolver() = - generator("compiler/frontend.java/src", DI_DEFAULT_PACKAGE, "InjectorForJavaDescriptorResolver") { - parameter() - parameter() - - publicField(useAsContext = true, - init = GivenExpression("org.jetbrains.kotlin.context.ContextPackage.GlobalContext()")) - publicField(name = "module", - init = GivenExpression(javaClass().getName() + ".createJavaModule(\"\")")) - publicField() - publicField() - - field( - init = GivenExpression(javaClass().getName() + ".allScope(project)")) - - field() - field() - field() - field() - field() - field() - field() - field() - field() - field() - - field( - init = GivenExpression(javaClass().getName() + ".SERVICE.getInstance(project)")) - } - private fun generatorForLazyResolveWithJava() = generator("compiler/frontend.java/src", DI_DEFAULT_PACKAGE, "InjectorForLazyResolveWithJava") { commonForResolveSessionBased() parameter(name = "moduleContentScope") - parameter() publicField() @@ -192,7 +156,7 @@ private fun generatorForLazyResolveWithJava() = + ".SERVICE.getInstance(project).create(moduleContentScope)") ) - field() + publicField() field() field() field()