Revise per module out-of-code-block (KT-32364)
This commit is contained in:
+31
-13
@@ -13,7 +13,6 @@ import com.intellij.openapi.roots.DependencyScope
|
||||
import com.intellij.openapi.roots.ModuleRootManager
|
||||
import com.intellij.openapi.roots.ModuleRootModificationUtil
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.impl.PsiModificationTrackerImpl
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||
@@ -25,14 +24,14 @@ import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.idea.caches.project.ModuleSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.SdkInfo
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinModuleOutOfCodeBlockModificationTracker
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder
|
||||
import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings
|
||||
import org.jetbrains.kotlin.idea.completion.test.withServiceRegistered
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetConfiguration
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetType
|
||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
|
||||
import org.jetbrains.kotlin.idea.caches.trackers.KotlinModuleModificationTracker
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.idea.test.allKotlinFiles
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
@@ -43,6 +42,7 @@ import org.jetbrains.kotlin.samWithReceiver.SamWithReceiverCommandLineProcessor.
|
||||
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner
|
||||
import org.jetbrains.kotlin.test.MockLibraryUtil
|
||||
import org.jetbrains.kotlin.test.TestJdkKind.FULL_JDK
|
||||
import org.junit.Assert.assertNotEquals
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
@RunWith(JUnit3WithIdeaConfigurationRunner::class)
|
||||
@@ -134,30 +134,48 @@ open class MultiModuleHighlightingTest : AbstractMultiModuleHighlightingTest() {
|
||||
tracker.sdkResolversComputed.clear()
|
||||
tracker.moduleResolversComputed.clear()
|
||||
|
||||
val module1ModCount = KotlinCodeBlockModificationListener.getInstance(myProject).getModificationCount(module1)
|
||||
val module1ModTracker = KotlinModuleOutOfCodeBlockModificationTracker(module1)
|
||||
val module2ModTracker = KotlinModuleOutOfCodeBlockModificationTracker(module2)
|
||||
val module3ModTracker = KotlinModuleOutOfCodeBlockModificationTracker(module3)
|
||||
|
||||
val module1ModTracker = KotlinModuleModificationTracker(module1)
|
||||
val module2ModTracker = KotlinModuleModificationTracker(module2)
|
||||
val module3ModTracker = KotlinModuleModificationTracker(module3)
|
||||
val m2ContentRoot = ModuleRootManager.getInstance(module1).contentRoots.single()
|
||||
val m1 = m2ContentRoot.findChild("m1.kt")!!
|
||||
val m1doc = FileDocumentManager.getInstance().getDocument(m1)!!
|
||||
project.executeWriteCommand("a") {
|
||||
m1doc.insertString(m1doc.textLength , "fun foo() = 1")
|
||||
PsiDocumentManager.getInstance(myProject).commitAllDocuments()
|
||||
}
|
||||
|
||||
val contentRoot = ModuleRootManager.getInstance(module2).contentRoots.single()
|
||||
val m2 = contentRoot.findChild("m2.kt")!!
|
||||
// Internal counters should be ready after modifications in m1
|
||||
val afterFirstModification = KotlinModuleOutOfCodeBlockModificationTracker.getModificationCount(module1)
|
||||
|
||||
assertEquals(afterFirstModification, module1ModTracker.modificationCount)
|
||||
assertEquals(afterFirstModification, module2ModTracker.modificationCount)
|
||||
assertEquals(afterFirstModification, module3ModTracker.modificationCount)
|
||||
|
||||
val m1ContentRoot = ModuleRootManager.getInstance(module2).contentRoots.single()
|
||||
val m2 = m1ContentRoot.findChild("m2.kt")!!
|
||||
val m2doc = FileDocumentManager.getInstance().getDocument(m2)!!
|
||||
project.executeWriteCommand("a") {
|
||||
m2doc.insertString(m2doc.textLength , "fun foo() = 1")
|
||||
PsiDocumentManager.getInstance(myProject).commitAllDocuments()
|
||||
}
|
||||
val currentModCount = PsiManager.getInstance(project).modificationTracker.outOfCodeBlockModificationCount
|
||||
|
||||
assertEquals(module1ModCount, KotlinCodeBlockModificationListener.getInstance(myProject).getModificationCount(module1))
|
||||
assertEquals(module1ModCount, module1ModTracker.modificationCount)
|
||||
val currentModCount = KotlinCodeBlockModificationListener.getInstance(project).kotlinOutOfCodeBlockTracker.modificationCount
|
||||
|
||||
// Counter for m1 module should be unaffected by modification in m2
|
||||
assertEquals(afterFirstModification, KotlinModuleOutOfCodeBlockModificationTracker.getModificationCount(module1))
|
||||
assertEquals(afterFirstModification, module1ModTracker.modificationCount)
|
||||
|
||||
// Counters for m2 and m3 should be changed
|
||||
assertNotEquals(afterFirstModification, currentModCount)
|
||||
assertEquals(currentModCount, module2ModTracker.modificationCount)
|
||||
assertEquals(currentModCount, module3ModTracker.modificationCount)
|
||||
|
||||
checkHighlightingInProject { project.allKotlinFiles().filter { "m2" in it.name } }
|
||||
|
||||
assertEquals(0, tracker.sdkResolversComputed.size)
|
||||
assertEquals(1, tracker.moduleResolversComputed.size)
|
||||
assertEquals(2, tracker.moduleResolversComputed.size)
|
||||
|
||||
tracker.moduleResolversComputed.clear()
|
||||
(PsiModificationTracker.SERVICE.getInstance(myProject) as PsiModificationTrackerImpl).incOutOfCodeBlockModificationCounter()
|
||||
|
||||
Reference in New Issue
Block a user