diff --git a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModificationTrackerFactory.kt b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModificationTrackerFactory.kt index e60cbf5e691..3f01c48b228 100644 --- a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModificationTrackerFactory.kt +++ b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/KotlinModificationTrackerFactory.kt @@ -72,9 +72,12 @@ public abstract class KotlinModificationTrackerFactory { */ public abstract fun createModuleStateTracker(module: KtModule): KtModuleStateTracker - + /** + * Increments modification trackers to invalidate caches. If [includeBinaryTrackers] is `false`, binary module-related modification + * trackers will not be incremented (such as library trackers, SDK tracker, built-ins tracker, and so on). + */ @TestOnly - public abstract fun incrementModificationsCount() + public abstract fun incrementModificationsCount(includeBinaryTrackers: Boolean = true) public companion object { public fun getService(project: Project): KotlinModificationTrackerFactory = diff --git a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticModificationTrackerFactory.kt b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticModificationTrackerFactory.kt index 854fc36b083..a80571719e7 100644 --- a/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticModificationTrackerFactory.kt +++ b/analysis/analysis-api-providers/src/org/jetbrains/kotlin/analysis/providers/impl/KotlinStaticModificationTrackerFactory.kt @@ -38,11 +38,16 @@ public class KotlinStaticModificationTrackerFactory : KotlinModificationTrackerF } @TestOnly - override fun incrementModificationsCount() { + override fun incrementModificationsCount(includeBinaryTrackers: Boolean) { projectWide.incModificationCount() - librariesWide.incModificationCount() + if (includeBinaryTrackers) { + librariesWide.incModificationCount() + } moduleOutOfBlock.values.forEach { it.incModificationCount() } - moduleState.values.forEach { it.incModificationCount() } + moduleState.entries.forEach { (ktModule, tracker) -> + if (ktModule is KtBinaryModule && !includeBinaryTrackers) return@forEach + tracker.incModificationCount() + } } }