From b32b36281054e10729317a8465cf0f45d6518fae Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 29 May 2019 16:00:47 +0300 Subject: [PATCH] Extract KotlinModuleModificationTracker to separate file --- .../KotlinCodeBlockModificationListener.kt | 40 --------------- .../KotlinModuleModificationTracker.kt | 50 +++++++++++++++++++ 2 files changed, 50 insertions(+), 40 deletions(-) create mode 100644 idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinModuleModificationTracker.kt diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt index 37c92203de7..41dffa1a335 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt @@ -8,10 +8,7 @@ package org.jetbrains.kotlin.idea.caches.trackers import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleUtil import com.intellij.openapi.project.Project -import com.intellij.openapi.roots.ModuleRootManager -import com.intellij.openapi.roots.ProjectRootModificationTracker import com.intellij.openapi.util.Key -import com.intellij.openapi.util.ModificationTracker import com.intellij.openapi.vfs.VirtualFile import com.intellij.pom.PomManager import com.intellij.pom.PomModelAspect @@ -21,10 +18,7 @@ import com.intellij.pom.tree.TreeAspect import com.intellij.pom.tree.events.TreeChangeEvent import com.intellij.psi.PsiElement import com.intellij.psi.impl.PsiModificationTrackerImpl -import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.PsiModificationTracker -import com.intellij.util.CommonProcessors -import org.jetbrains.kotlin.idea.caches.project.cached import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getTopmostParentOfType import org.jetbrains.kotlin.psi.psiUtil.isAncestor @@ -172,37 +166,3 @@ private val FILE_OUT_OF_BLOCK_MODIFICATION_COUNT = Key("FILE_OUT_OF_BLOCK_ val KtFile.outOfBlockModificationCount: Long get() = getUserData(FILE_OUT_OF_BLOCK_MODIFICATION_COUNT) ?: 0 -class KotlinModuleModificationTracker(val module: Module) : ModificationTracker { - private val kotlinModCountListener = - KotlinCodeBlockModificationListener.getInstance(module.project) - private val psiModificationTracker = PsiModificationTracker.SERVICE.getInstance(module.project) - private val dependencies by lazy { - module.cached(CachedValueProvider { - CachedValueProvider.Result.create( - HashSet().apply { - ModuleRootManager.getInstance(module).orderEntries().recursively().forEachModule( - CommonProcessors.CollectProcessor(this) - ) - }, - ProjectRootModificationTracker.getInstance(module.project) - ) - }) - } - - override fun getModificationCount(): Long { - val currentGlobalCount = psiModificationTracker.outOfCodeBlockModificationCount - - if (kotlinModCountListener.hasPerModuleModificationCounts()) { - val selfCount = kotlinModCountListener.getModificationCount(module) - if (selfCount == currentGlobalCount) return selfCount - var maxCount = selfCount - for (dependency in dependencies) { - val depCount = kotlinModCountListener.getModificationCount(dependency) - if (depCount == currentGlobalCount) return currentGlobalCount - if (depCount > maxCount) maxCount = depCount - } - return maxCount - } - return currentGlobalCount - } -} diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinModuleModificationTracker.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinModuleModificationTracker.kt new file mode 100644 index 00000000000..17240491606 --- /dev/null +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinModuleModificationTracker.kt @@ -0,0 +1,50 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.caches.trackers + +import com.intellij.openapi.module.Module +import com.intellij.openapi.roots.ModuleRootManager +import com.intellij.openapi.roots.ProjectRootModificationTracker +import com.intellij.openapi.util.ModificationTracker +import com.intellij.psi.util.CachedValueProvider +import com.intellij.psi.util.PsiModificationTracker +import com.intellij.util.CommonProcessors +import org.jetbrains.kotlin.idea.caches.project.cached + +class KotlinModuleModificationTracker(val module: Module) : ModificationTracker { + private val kotlinModCountListener = + KotlinCodeBlockModificationListener.getInstance(module.project) + private val psiModificationTracker = PsiModificationTracker.SERVICE.getInstance(module.project) + private val dependencies by lazy { + module.cached(CachedValueProvider { + CachedValueProvider.Result.create( + HashSet().apply { + ModuleRootManager.getInstance(module).orderEntries().recursively().forEachModule( + CommonProcessors.CollectProcessor(this) + ) + }, + ProjectRootModificationTracker.getInstance(module.project) + ) + }) + } + + override fun getModificationCount(): Long { + val currentGlobalCount = psiModificationTracker.outOfCodeBlockModificationCount + + if (kotlinModCountListener.hasPerModuleModificationCounts()) { + val selfCount = kotlinModCountListener.getModificationCount(module) + if (selfCount == currentGlobalCount) return selfCount + var maxCount = selfCount + for (dependency in dependencies) { + val depCount = kotlinModCountListener.getModificationCount(dependency) + if (depCount == currentGlobalCount) return currentGlobalCount + if (depCount > maxCount) maxCount = depCount + } + return maxCount + } + return currentGlobalCount + } +} \ No newline at end of file