Use Kotlin oocb instead of platform oocb tracker (KT-32364)
This commit is contained in:
@@ -263,8 +263,11 @@ class ResolverForProjectImpl<M : ModuleInfo>(
|
||||
)
|
||||
moduleInfoByDescriptor[moduleDescriptor] = module
|
||||
setupModuleDescriptor(module, moduleDescriptor)
|
||||
val modificationTracker = (module as? TrackableModuleInfo)?.createModificationTracker()
|
||||
?: (PsiModificationTracker.SERVICE.getInstance(projectContext.project).outOfCodeBlockModificationTracker.takeIf { invalidateOnOOCB })
|
||||
val modificationTracker = (module as? TrackableModuleInfo)?.createModificationTracker() ?: if (invalidateOnOOCB) {
|
||||
PsiModificationTracker.SERVICE.getInstance(projectContext.project).outOfCodeBlockModificationTracker
|
||||
} else {
|
||||
null
|
||||
}
|
||||
return ModuleData(moduleDescriptor, modificationTracker)
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -43,18 +43,19 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.project.*
|
||||
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.util.contextWithNewLockAndCompositeExceptionTracker
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.outOfBlockModificationCount
|
||||
import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider
|
||||
import org.jetbrains.kotlin.idea.core.script.ScriptDependenciesModificationTracker
|
||||
import org.jetbrains.kotlin.idea.core.script.dependencies.ScriptAdditionalIdeaDependenciesProvider
|
||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.outOfBlockModificationCount
|
||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
|
||||
import org.jetbrains.kotlin.platform.DefaultIdeTargetPlatformKindProvider
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.contains
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
@@ -226,7 +227,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
|
||||
|
||||
val dependenciesForSyntheticFileCache =
|
||||
listOf(
|
||||
PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT,
|
||||
KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker,
|
||||
filesModificationTracker
|
||||
)
|
||||
|
||||
|
||||
+2
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.idea.project
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
|
||||
import org.jetbrains.kotlin.idea.stubindex.KotlinProbablyContractedFunctionShortNameIndex
|
||||
import org.jetbrains.kotlin.resolve.lazy.ProbablyContractedCallableNames
|
||||
|
||||
@@ -17,7 +17,7 @@ class ProbablyContractedCallableNamesImpl(project: Project) : ProbablyContracted
|
||||
{
|
||||
CachedValueProvider.Result.create(
|
||||
KotlinProbablyContractedFunctionShortNameIndex.getInstance().getAllKeys(project),
|
||||
PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT
|
||||
KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker
|
||||
)
|
||||
},
|
||||
false
|
||||
|
||||
+2
-6
@@ -8,13 +8,9 @@ package org.jetbrains.kotlin.idea.project
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import com.intellij.util.containers.SLRUCache
|
||||
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.PerFileAnalysisCache
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
|
||||
import org.jetbrains.kotlin.idea.stubindex.KotlinProbablyNothingFunctionShortNameIndex
|
||||
import org.jetbrains.kotlin.idea.stubindex.KotlinProbablyNothingPropertyShortNameIndex
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.lazy.ProbablyNothingCallableNames
|
||||
|
||||
class ProbablyNothingCallableNamesImpl(project: Project) : ProbablyNothingCallableNames {
|
||||
@@ -28,6 +24,6 @@ class ProbablyNothingCallableNamesImpl(project: Project) : ProbablyNothingCallab
|
||||
private inline fun createCachedValue(project: Project, crossinline names: () -> Collection<String>) =
|
||||
CachedValuesManager.getManager(project).createCachedValue(
|
||||
{
|
||||
CachedValueProvider.Result.create(names(), PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT)
|
||||
CachedValueProvider.Result.create(names(), KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker)
|
||||
}, false
|
||||
)
|
||||
|
||||
@@ -78,7 +78,7 @@ class ResolveElementCache(
|
||||
CachedValueProvider<MutableMap<KtElement, CachedFullResolve>> {
|
||||
CachedValueProvider.Result.create(
|
||||
ContainerUtil.createConcurrentWeakKeySoftValueMap<KtElement, CachedFullResolve>(),
|
||||
PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT,
|
||||
KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker,
|
||||
resolveSession.exceptionTracker
|
||||
)
|
||||
},
|
||||
|
||||
@@ -23,11 +23,11 @@ import com.intellij.psi.search.PsiShortNamesCache
|
||||
import com.intellij.psi.util.CachedValue
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.asJava.ImpreciseResolveResult
|
||||
import org.jetbrains.kotlin.asJava.ImpreciseResolveResult.*
|
||||
import org.jetbrains.kotlin.idea.caches.project.getNullableModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
|
||||
import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider
|
||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||
import org.jetbrains.kotlin.idea.project.findAnalyzerServices
|
||||
@@ -78,7 +78,7 @@ class PsiBasedClassResolver @TestOnly constructor(private val targetClassFqName:
|
||||
{
|
||||
CachedValueProvider.Result(
|
||||
PsiBasedClassResolver(target),
|
||||
PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT
|
||||
KotlinCodeBlockModificationListener.getInstance(target.project).kotlinOutOfCodeBlockTracker
|
||||
)
|
||||
}, false
|
||||
)
|
||||
|
||||
+3
-4
@@ -18,12 +18,11 @@ package org.jetbrains.kotlin.idea.stubindex
|
||||
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import com.intellij.util.containers.MultiMap
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import java.util.*
|
||||
@@ -34,7 +33,7 @@ class SubpackagesIndexService(private val project: Project) {
|
||||
{
|
||||
CachedValueProvider.Result(
|
||||
SubpackagesIndex(KotlinExactPackagesIndex.getInstance().getAllKeys(project)),
|
||||
PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT)
|
||||
KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker)
|
||||
},
|
||||
false
|
||||
)
|
||||
@@ -43,7 +42,7 @@ class SubpackagesIndexService(private val project: Project) {
|
||||
// a map from any existing package (in kotlin) to a set of subpackages (not necessarily direct) containing files
|
||||
private val allPackageFqNames = hashSetOf<FqName>()
|
||||
private val fqNameByPrefix = MultiMap.createSet<FqName, FqName>()
|
||||
private val oocbCount = PsiManager.getInstance(project).modificationTracker.outOfCodeBlockModificationCount
|
||||
private val oocbCount = KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker.modificationCount
|
||||
|
||||
init {
|
||||
for (fqNameAsString in allPackageFqNames) {
|
||||
|
||||
+2
-2
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.stubindex.resolve
|
||||
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.stubs.StubIndex
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
@@ -26,6 +25,7 @@ import org.jetbrains.kotlin.idea.caches.PerModulePackageCacheService
|
||||
import org.jetbrains.kotlin.idea.caches.project.IdeaModuleInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.projectSourceModules
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
|
||||
import org.jetbrains.kotlin.idea.stubindex.KotlinExactPackagesIndex
|
||||
import org.jetbrains.kotlin.idea.stubindex.PackageIndexUtil
|
||||
import org.jetbrains.kotlin.idea.stubindex.SubpackagesIndexService
|
||||
@@ -109,7 +109,7 @@ class PluginDeclarationProviderFactory(
|
||||
packageExists = $packageExists, cachedPackageExists = $cachedPackageExists,
|
||||
oldPackageExists = $oldPackageExists,
|
||||
SPI.packageExists = $spiPackageExists, SPI = $subpackagesIndex,
|
||||
OOCB count = ${PsiManager.getInstance(project).modificationTracker.outOfCodeBlockModificationCount}
|
||||
OOCB count = ${KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker.modificationCount}
|
||||
moduleModificationCount = $moduleModificationCount
|
||||
""".trimIndent()
|
||||
|
||||
|
||||
+8
-3
@@ -25,7 +25,6 @@ import com.intellij.psi.PsiWhiteSpace
|
||||
import com.intellij.psi.util.CachedValue
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.idea.analysis.analyzeInContext
|
||||
@@ -85,8 +84,14 @@ class CompletionBindingContextProvider(project: Project) {
|
||||
}
|
||||
|
||||
private var prevCompletionDataCache: CachedValue<DataHolder> = CachedValuesManager.getManager(project).createCachedValue(
|
||||
{ CachedValueProvider.Result.create(DataHolder(), PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT) },
|
||||
false)
|
||||
{
|
||||
CachedValueProvider.Result.create(
|
||||
DataHolder(),
|
||||
KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker
|
||||
)
|
||||
},
|
||||
false
|
||||
)
|
||||
|
||||
|
||||
fun getBindingContext(position: PsiElement, resolutionFacade: ResolutionFacade): BindingContext {
|
||||
|
||||
+37
-2
@@ -5,9 +5,16 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.resolve
|
||||
|
||||
import com.intellij.mock.MockProject
|
||||
import com.intellij.pom.PomManager
|
||||
import com.intellij.pom.PomModel
|
||||
import com.intellij.pom.core.impl.PomModelImpl
|
||||
import com.intellij.pom.tree.TreeAspect
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import org.jetbrains.kotlin.container.ComponentProvider
|
||||
import org.jetbrains.kotlin.container.get
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
|
||||
import org.jetbrains.kotlin.idea.project.IdeaEnvironment
|
||||
import org.jetbrains.kotlin.idea.project.ResolveElementCache
|
||||
import org.jetbrains.kotlin.psi.KtAnonymousInitializer
|
||||
@@ -18,13 +25,41 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.TargetEnvironment
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||
import org.picocontainer.MutablePicoContainer
|
||||
|
||||
abstract class AbstractAdditionalResolveDescriptorRendererTest : AbstractDescriptorRendererTest() {
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
|
||||
val pomModelImpl = PomModelImpl(project)
|
||||
val treeAspect = TreeAspect(pomModelImpl)
|
||||
|
||||
(project as MockProject).registerService(PomModel::class.java, pomModelImpl)
|
||||
(project.picoContainer as MutablePicoContainer).registerComponentInstance(
|
||||
KotlinCodeBlockModificationListener(
|
||||
PsiModificationTracker.SERVICE.getInstance(project),
|
||||
project,
|
||||
treeAspect
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
(project.picoContainer as MutablePicoContainer).unregisterComponentByInstance(
|
||||
KotlinCodeBlockModificationListener.getInstance(project)
|
||||
)
|
||||
|
||||
val pomModel = PomManager.getModel(project)
|
||||
(project.picoContainer as MutablePicoContainer).unregisterComponentByInstance(pomModel)
|
||||
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
override fun getDescriptor(declaration: KtDeclaration, container: ComponentProvider): DeclarationDescriptor {
|
||||
if (declaration is KtAnonymousInitializer || KtPsiUtil.isLocal(declaration)) {
|
||||
return container.get<ResolveElementCache>()
|
||||
.resolveToElements(listOf(declaration), BodyResolveMode.FULL)
|
||||
.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration)!!
|
||||
.resolveToElements(listOf(declaration), BodyResolveMode.FULL)
|
||||
.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration)!!
|
||||
}
|
||||
return container.get<ResolveSession>().resolveToDescriptor(declaration)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user