diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt index e3fc88018d3..6e571dc91c7 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/analyzer/common/CommonResolverForModuleFactory.kt @@ -23,21 +23,21 @@ import org.jetbrains.kotlin.analyzer.* import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.container.StorageComponentContainer -import org.jetbrains.kotlin.platform.TargetPlatformVersion import org.jetbrains.kotlin.container.get +import org.jetbrains.kotlin.container.useImpl +import org.jetbrains.kotlin.container.useInstance import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.context.ProjectContext import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl -import org.jetbrains.kotlin.container.useImpl -import org.jetbrains.kotlin.container.useInstance import org.jetbrains.kotlin.frontend.di.configureModule import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents import org.jetbrains.kotlin.load.kotlin.MetadataFinderFactory import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.CommonPlatforms import org.jetbrains.kotlin.platform.TargetPlatform +import org.jetbrains.kotlin.platform.TargetPlatformVersion import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker @@ -127,6 +127,7 @@ class CommonResolverForModuleFactory(private val shouldCheckExpectActual: Boolea "sources for metadata serializer", ProjectContext(project, "metadata serializer"), listOf(moduleInfo), + invalidateOnOOCB = false, modulesContent = { ModuleContent(it, files, GlobalSearchScope.allScope(project)) }, moduleLanguageSettingsProvider = object : LanguageSettingsProvider { override fun getLanguageVersionSettings( diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt index 8b34fa6ed06..1aefb20aedd 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt @@ -39,7 +39,8 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.TargetPlatformVersion import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.resolve.* +import org.jetbrains.kotlin.resolve.CompilerEnvironment +import org.jetbrains.kotlin.resolve.TargetEnvironment import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.storage.getValue import java.util.* @@ -94,12 +95,12 @@ class ResolverForProjectImpl( private val moduleLanguageSettingsProvider: LanguageSettingsProvider, private val resolverForModuleFactoryByPlatform: (TargetPlatform?) -> ResolverForModuleFactory, private val platformParameters: (TargetPlatform) -> PlatformAnalysisParameters, + private val invalidateOnOOCB: Boolean, private val targetEnvironment: TargetEnvironment = CompilerEnvironment, override val builtIns: KotlinBuiltIns = DefaultBuiltIns.Instance, private val delegateResolver: ResolverForProject = EmptyResolverForProject(), private val firstDependency: M? = null, private val packageOracleFactory: PackageOracleFactory = PackageOracleFactory.OptimisticFactory, - private val invalidateOnOOCB: Boolean = true, private val isReleaseCoroutines: Boolean? = null ) : ResolverForProject() { diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt index e0a8c908d78..6cf5e10d0ae 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/lazy/lazyResolveTestUtils.kt @@ -17,21 +17,19 @@ package org.jetbrains.kotlin.resolve.lazy import com.intellij.openapi.project.Project +import com.intellij.openapi.util.ModificationTracker import com.intellij.psi.search.GlobalSearchScope -import org.jetbrains.kotlin.analyzer.LanguageSettingsProvider -import org.jetbrains.kotlin.analyzer.ModuleContent -import org.jetbrains.kotlin.analyzer.ModuleInfo -import org.jetbrains.kotlin.analyzer.ResolverForProjectImpl +import org.jetbrains.kotlin.analyzer.* import org.jetbrains.kotlin.container.get import org.jetbrains.kotlin.context.ProjectContext import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.jvm.JvmPlatforms -import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters +import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices fun createResolveSessionForFiles( @@ -40,11 +38,12 @@ fun createResolveSessionForFiles( addBuiltIns: Boolean ): ResolveSession { val projectContext = ProjectContext(project, "lazy resolve test utils") - val testModule = TestModule(addBuiltIns) + val testModule = TestModule(project, addBuiltIns) val resolverForProject = ResolverForProjectImpl( "test", projectContext, listOf(testModule), { ModuleContent(it, syntheticFiles, GlobalSearchScope.allScope(project)) }, + invalidateOnOOCB = false, moduleLanguageSettingsProvider = LanguageSettingsProvider.Default, resolverForModuleFactoryByPlatform = { JvmResolverForModuleFactory }, platformParameters = { _ -> @@ -57,18 +56,22 @@ fun createResolveSessionForFiles( return resolverForProject.resolverForModule(testModule).componentProvider.get() } -private class TestModule(val dependsOnBuiltIns: Boolean) : ModuleInfo { +private class TestModule(val project: Project, val dependsOnBuiltIns: Boolean) : TrackableModuleInfo { override val name: Name = Name.special("") + override fun dependencies() = listOf(this) override fun dependencyOnBuiltIns() = if (dependsOnBuiltIns) ModuleInfo.DependencyOnBuiltIns.LAST else ModuleInfo.DependencyOnBuiltIns.NONE - override val platform: TargetPlatform get() = JvmPlatforms.unspecifiedJvmPlatform + override fun createModificationTracker(): ModificationTracker { + return ModificationTracker.NEVER_CHANGED + } + override val analyzerServices: PlatformDependentAnalyzerServices get() = JvmPlatformAnalyzerServices } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt index 2274d7fb640..f288948eba5 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/MultiModuleJavaAnalysisCustomTest.kt @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.jvm.compiler +import com.intellij.openapi.project.Project +import com.intellij.openapi.util.ModificationTracker import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.search.DelegatingGlobalSearchScope import com.intellij.psi.search.GlobalSearchScope @@ -33,15 +35,15 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.load.kotlin.PackagePartProvider import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.jvm.JvmPlatforms +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices import org.jetbrains.kotlin.resolve.constants.EnumValue import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass import org.jetbrains.kotlin.resolve.descriptorUtil.module -import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters +import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices import org.jetbrains.kotlin.test.ConfigurationKind import org.jetbrains.kotlin.test.KotlinTestUtils @@ -55,9 +57,12 @@ import java.util.* class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() { private class TestModule( - val _name: String, val kotlinFiles: List, val javaFilesScope: GlobalSearchScope, - val _dependencies: TestModule.() -> List - ) : ModuleInfo { + val project: Project, + val _name: String, val kotlinFiles: List, val javaFilesScope: GlobalSearchScope, + val _dependencies: TestModule.() -> List + ) : TrackableModuleInfo { + override fun createModificationTracker(): ModificationTracker = ModificationTracker.NEVER_CHANGED + override fun dependencies() = _dependencies() override val name = Name.special("<$_name>") @@ -77,6 +82,7 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() { val resolverForProject = ResolverForProjectImpl( "test", projectContext, modules, + invalidateOnOOCB = false, modulesContent = { module -> ModuleContent(module, module.kotlinFiles, module.javaFilesScope) }, moduleLanguageSettingsProvider = LanguageSettingsProvider.Default, resolverForModuleFactoryByPlatform = { JvmResolverForModuleFactory }, @@ -120,7 +126,7 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() { return file.parent!!.parent!!.name == name } } - modules[name] = TestModule(name, kotlinFiles, javaFilesScope) { + modules[name] = TestModule(project, name, kotlinFiles, javaFilesScope) { when (this._name) { "a" -> listOf(this) "b" -> listOf(this, modules["a"]!!)