Make invalidateOnOOCB explicit in ResolverForProjectImpl and remove usage in tests
This commit is contained in:
+4
-3
@@ -23,21 +23,21 @@ import org.jetbrains.kotlin.analyzer.*
|
|||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
|
||||||
import org.jetbrains.kotlin.container.get
|
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.ModuleContext
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
import org.jetbrains.kotlin.context.ProjectContext
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
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.configureModule
|
||||||
import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents
|
import org.jetbrains.kotlin.frontend.di.configureStandardResolveComponents
|
||||||
import org.jetbrains.kotlin.load.kotlin.MetadataFinderFactory
|
import org.jetbrains.kotlin.load.kotlin.MetadataFinderFactory
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.platform.CommonPlatforms
|
import org.jetbrains.kotlin.platform.CommonPlatforms
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
|
import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
|
||||||
@@ -127,6 +127,7 @@ class CommonResolverForModuleFactory(private val shouldCheckExpectActual: Boolea
|
|||||||
"sources for metadata serializer",
|
"sources for metadata serializer",
|
||||||
ProjectContext(project, "metadata serializer"),
|
ProjectContext(project, "metadata serializer"),
|
||||||
listOf(moduleInfo),
|
listOf(moduleInfo),
|
||||||
|
invalidateOnOOCB = false,
|
||||||
modulesContent = { ModuleContent(it, files, GlobalSearchScope.allScope(project)) },
|
modulesContent = { ModuleContent(it, files, GlobalSearchScope.allScope(project)) },
|
||||||
moduleLanguageSettingsProvider = object : LanguageSettingsProvider {
|
moduleLanguageSettingsProvider = object : LanguageSettingsProvider {
|
||||||
override fun getLanguageVersionSettings(
|
override fun getLanguageVersionSettings(
|
||||||
|
|||||||
@@ -39,7 +39,8 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
import org.jetbrains.kotlin.platform.TargetPlatformVersion
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
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.StorageManager
|
||||||
import org.jetbrains.kotlin.storage.getValue
|
import org.jetbrains.kotlin.storage.getValue
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -94,12 +95,12 @@ class ResolverForProjectImpl<M : ModuleInfo>(
|
|||||||
private val moduleLanguageSettingsProvider: LanguageSettingsProvider,
|
private val moduleLanguageSettingsProvider: LanguageSettingsProvider,
|
||||||
private val resolverForModuleFactoryByPlatform: (TargetPlatform?) -> ResolverForModuleFactory,
|
private val resolverForModuleFactoryByPlatform: (TargetPlatform?) -> ResolverForModuleFactory,
|
||||||
private val platformParameters: (TargetPlatform) -> PlatformAnalysisParameters,
|
private val platformParameters: (TargetPlatform) -> PlatformAnalysisParameters,
|
||||||
|
private val invalidateOnOOCB: Boolean,
|
||||||
private val targetEnvironment: TargetEnvironment = CompilerEnvironment,
|
private val targetEnvironment: TargetEnvironment = CompilerEnvironment,
|
||||||
override val builtIns: KotlinBuiltIns = DefaultBuiltIns.Instance,
|
override val builtIns: KotlinBuiltIns = DefaultBuiltIns.Instance,
|
||||||
private val delegateResolver: ResolverForProject<M> = EmptyResolverForProject(),
|
private val delegateResolver: ResolverForProject<M> = EmptyResolverForProject(),
|
||||||
private val firstDependency: M? = null,
|
private val firstDependency: M? = null,
|
||||||
private val packageOracleFactory: PackageOracleFactory = PackageOracleFactory.OptimisticFactory,
|
private val packageOracleFactory: PackageOracleFactory = PackageOracleFactory.OptimisticFactory,
|
||||||
private val invalidateOnOOCB: Boolean = true,
|
|
||||||
private val isReleaseCoroutines: Boolean? = null
|
private val isReleaseCoroutines: Boolean? = null
|
||||||
) : ResolverForProject<M>() {
|
) : ResolverForProject<M>() {
|
||||||
|
|
||||||
|
|||||||
+13
-10
@@ -17,21 +17,19 @@
|
|||||||
package org.jetbrains.kotlin.resolve.lazy
|
package org.jetbrains.kotlin.resolve.lazy
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.util.ModificationTracker
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.analyzer.LanguageSettingsProvider
|
import org.jetbrains.kotlin.analyzer.*
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleContent
|
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
|
||||||
import org.jetbrains.kotlin.analyzer.ResolverForProjectImpl
|
|
||||||
import org.jetbrains.kotlin.container.get
|
import org.jetbrains.kotlin.container.get
|
||||||
import org.jetbrains.kotlin.context.ProjectContext
|
import org.jetbrains.kotlin.context.ProjectContext
|
||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
import org.jetbrains.kotlin.load.kotlin.PackagePartProvider
|
||||||
import org.jetbrains.kotlin.name.Name
|
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.TargetPlatform
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
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.JvmPlatformParameters
|
||||||
|
import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||||
|
|
||||||
fun createResolveSessionForFiles(
|
fun createResolveSessionForFiles(
|
||||||
@@ -40,11 +38,12 @@ fun createResolveSessionForFiles(
|
|||||||
addBuiltIns: Boolean
|
addBuiltIns: Boolean
|
||||||
): ResolveSession {
|
): ResolveSession {
|
||||||
val projectContext = ProjectContext(project, "lazy resolve test utils")
|
val projectContext = ProjectContext(project, "lazy resolve test utils")
|
||||||
val testModule = TestModule(addBuiltIns)
|
val testModule = TestModule(project, addBuiltIns)
|
||||||
val resolverForProject = ResolverForProjectImpl(
|
val resolverForProject = ResolverForProjectImpl(
|
||||||
"test",
|
"test",
|
||||||
projectContext, listOf(testModule),
|
projectContext, listOf(testModule),
|
||||||
{ ModuleContent(it, syntheticFiles, GlobalSearchScope.allScope(project)) },
|
{ ModuleContent(it, syntheticFiles, GlobalSearchScope.allScope(project)) },
|
||||||
|
invalidateOnOOCB = false,
|
||||||
moduleLanguageSettingsProvider = LanguageSettingsProvider.Default,
|
moduleLanguageSettingsProvider = LanguageSettingsProvider.Default,
|
||||||
resolverForModuleFactoryByPlatform = { JvmResolverForModuleFactory },
|
resolverForModuleFactoryByPlatform = { JvmResolverForModuleFactory },
|
||||||
platformParameters = { _ ->
|
platformParameters = { _ ->
|
||||||
@@ -57,18 +56,22 @@ fun createResolveSessionForFiles(
|
|||||||
return resolverForProject.resolverForModule(testModule).componentProvider.get<ResolveSession>()
|
return resolverForProject.resolverForModule(testModule).componentProvider.get<ResolveSession>()
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TestModule(val dependsOnBuiltIns: Boolean) : ModuleInfo {
|
private class TestModule(val project: Project, val dependsOnBuiltIns: Boolean) : TrackableModuleInfo {
|
||||||
override val name: Name = Name.special("<Test module for lazy resolve>")
|
override val name: Name = Name.special("<Test module for lazy resolve>")
|
||||||
|
|
||||||
override fun dependencies() = listOf(this)
|
override fun dependencies() = listOf(this)
|
||||||
override fun dependencyOnBuiltIns() =
|
override fun dependencyOnBuiltIns() =
|
||||||
if (dependsOnBuiltIns)
|
if (dependsOnBuiltIns)
|
||||||
ModuleInfo.DependencyOnBuiltIns.LAST
|
ModuleInfo.DependencyOnBuiltIns.LAST
|
||||||
else
|
else
|
||||||
ModuleInfo.DependencyOnBuiltIns.NONE
|
ModuleInfo.DependencyOnBuiltIns.NONE
|
||||||
|
|
||||||
override val platform: TargetPlatform
|
override val platform: TargetPlatform
|
||||||
get() = JvmPlatforms.unspecifiedJvmPlatform
|
get() = JvmPlatforms.unspecifiedJvmPlatform
|
||||||
|
|
||||||
|
override fun createModificationTracker(): ModificationTracker {
|
||||||
|
return ModificationTracker.NEVER_CHANGED
|
||||||
|
}
|
||||||
|
|
||||||
override val analyzerServices: PlatformDependentAnalyzerServices
|
override val analyzerServices: PlatformDependentAnalyzerServices
|
||||||
get() = JvmPlatformAnalyzerServices
|
get() = JvmPlatformAnalyzerServices
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-7
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.jvm.compiler
|
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.openapi.vfs.VirtualFile
|
||||||
import com.intellij.psi.search.DelegatingGlobalSearchScope
|
import com.intellij.psi.search.DelegatingGlobalSearchScope
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
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.load.kotlin.PackagePartProvider
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
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.TargetPlatform
|
||||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
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.constants.EnumValue
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
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.JvmPlatformParameters
|
||||||
|
import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory
|
||||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||||
import org.jetbrains.kotlin.test.ConfigurationKind
|
import org.jetbrains.kotlin.test.ConfigurationKind
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
@@ -55,9 +57,12 @@ import java.util.*
|
|||||||
class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
|
class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
|
||||||
|
|
||||||
private class TestModule(
|
private class TestModule(
|
||||||
val _name: String, val kotlinFiles: List<KtFile>, val javaFilesScope: GlobalSearchScope,
|
val project: Project,
|
||||||
val _dependencies: TestModule.() -> List<TestModule>
|
val _name: String, val kotlinFiles: List<KtFile>, val javaFilesScope: GlobalSearchScope,
|
||||||
) : ModuleInfo {
|
val _dependencies: TestModule.() -> List<TestModule>
|
||||||
|
) : TrackableModuleInfo {
|
||||||
|
override fun createModificationTracker(): ModificationTracker = ModificationTracker.NEVER_CHANGED
|
||||||
|
|
||||||
override fun dependencies() = _dependencies()
|
override fun dependencies() = _dependencies()
|
||||||
override val name = Name.special("<$_name>")
|
override val name = Name.special("<$_name>")
|
||||||
|
|
||||||
@@ -77,6 +82,7 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
|
|||||||
val resolverForProject = ResolverForProjectImpl(
|
val resolverForProject = ResolverForProjectImpl(
|
||||||
"test",
|
"test",
|
||||||
projectContext, modules,
|
projectContext, modules,
|
||||||
|
invalidateOnOOCB = false,
|
||||||
modulesContent = { module -> ModuleContent(module, module.kotlinFiles, module.javaFilesScope) },
|
modulesContent = { module -> ModuleContent(module, module.kotlinFiles, module.javaFilesScope) },
|
||||||
moduleLanguageSettingsProvider = LanguageSettingsProvider.Default,
|
moduleLanguageSettingsProvider = LanguageSettingsProvider.Default,
|
||||||
resolverForModuleFactoryByPlatform = { JvmResolverForModuleFactory },
|
resolverForModuleFactoryByPlatform = { JvmResolverForModuleFactory },
|
||||||
@@ -120,7 +126,7 @@ class MultiModuleJavaAnalysisCustomTest : KtUsefulTestCase() {
|
|||||||
return file.parent!!.parent!!.name == name
|
return file.parent!!.parent!!.name == name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
modules[name] = TestModule(name, kotlinFiles, javaFilesScope) {
|
modules[name] = TestModule(project, name, kotlinFiles, javaFilesScope) {
|
||||||
when (this._name) {
|
when (this._name) {
|
||||||
"a" -> listOf(this)
|
"a" -> listOf(this)
|
||||||
"b" -> listOf(this, modules["a"]!!)
|
"b" -> listOf(this, modules["a"]!!)
|
||||||
|
|||||||
Reference in New Issue
Block a user