FIR IDE: invalidate caches between tests
This commit is contained in:
@@ -6,8 +6,10 @@
|
||||
package org.jetbrains.kotlin.checkers
|
||||
|
||||
import com.intellij.rt.execution.junit.FileComparisonFailure
|
||||
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||
import org.jetbrains.kotlin.idea.test.withCustomCompilerOptions
|
||||
import org.jetbrains.kotlin.idea.withPossiblyDisabledDuplicatedFirSourceElementsException
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
||||
import java.io.File
|
||||
|
||||
@@ -23,6 +25,11 @@ abstract class AbstractFirPsiCheckerTest : AbstractPsiCheckerTest() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
project.invalidateCaches(file as? KtFile)
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
override fun checkHighlighting(
|
||||
checkWarnings: Boolean,
|
||||
checkInfos: Boolean,
|
||||
|
||||
@@ -6,10 +6,17 @@
|
||||
package org.jetbrains.kotlin.findUsages
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
abstract class AbstractFindUsagesFirTest : AbstractFindUsagesTest() {
|
||||
override fun isFirPlugin(): Boolean = true
|
||||
|
||||
override fun tearDown() {
|
||||
project.invalidateCaches(file as? KtFile)
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
||||
super.doTest<T>(path)
|
||||
}
|
||||
|
||||
+7
@@ -6,10 +6,17 @@
|
||||
package org.jetbrains.kotlin.findUsages
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
abstract class AbstractFindUsagesWithDisableComponentSearchFirTest : AbstractFindUsagesWithDisableComponentSearchTest() {
|
||||
override fun isFirPlugin(): Boolean = true
|
||||
|
||||
override fun tearDown() {
|
||||
project.invalidateCaches(file as? KtFile)
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
||||
super.doTest<T>(path)
|
||||
}
|
||||
|
||||
+7
@@ -6,12 +6,19 @@
|
||||
package org.jetbrains.kotlin.findUsages
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
abstract class AbstractKotlinFindUsagesWithLibraryFirTest : AbstractKotlinFindUsagesWithLibraryTest() {
|
||||
override fun isFirPlugin(): Boolean = true
|
||||
|
||||
override fun tearDown() {
|
||||
project.invalidateCaches(file as? KtFile)
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
||||
super.doTest<T>(path)
|
||||
}
|
||||
|
||||
+7
@@ -6,11 +6,18 @@
|
||||
package org.jetbrains.kotlin.findUsages
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||
import org.jetbrains.kotlin.idea.test.KotlinJdkAndMultiplatformStdlibDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
abstract class AbstractKotlinFindUsagesWithStdlibFirTest : AbstractKotlinFindUsagesWithStdlibTest() {
|
||||
override fun isFirPlugin(): Boolean = true
|
||||
|
||||
override fun tearDown() {
|
||||
project.invalidateCaches(file as? KtFile)
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
||||
super.doTest<T>(path)
|
||||
}
|
||||
|
||||
+7
@@ -6,8 +6,10 @@
|
||||
package org.jetbrains.kotlin.idea.highlighter
|
||||
|
||||
import org.jetbrains.kotlin.idea.addExternalTestFiles
|
||||
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||
import org.jetbrains.kotlin.idea.test.ProjectDescriptorWithStdlibSources
|
||||
import org.jetbrains.kotlin.idea.withPossiblyDisabledDuplicatedFirSourceElementsException
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
||||
|
||||
@@ -23,6 +25,11 @@ abstract class AbstractFirHighlightingTest : AbstractHighlightingTest() {
|
||||
super.doTest(unused)
|
||||
}
|
||||
|
||||
override fun tearDown() {
|
||||
project.invalidateCaches(file as? KtFile)
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
override fun checkHighlighting(fileText: String) {
|
||||
val checkInfos = !InTextDirectivesUtils.isDirectiveDefined(fileText, NO_CHECK_INFOS_PREFIX);
|
||||
|
||||
|
||||
@@ -5,9 +5,30 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea
|
||||
|
||||
import com.intellij.openapi.components.service
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.idea.caches.project.LibraryModificationTracker
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.element.builder.DuplicatedFirSourceElementsException
|
||||
import org.jetbrains.kotlin.idea.fir.low.level.api.trackers.KotlinFirOutOfBlockModificationTrackerFactory
|
||||
import org.jetbrains.kotlin.idea.frontend.api.InvalidWayOfUsingAnalysisSession
|
||||
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.idea.frontend.api.analyze
|
||||
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSessionProvider
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.trackers.KotlinOutOfBlockModificationTrackerFactory
|
||||
|
||||
fun Throwable.shouldBeRethrown(): Boolean = when (this) {
|
||||
is DuplicatedFirSourceElementsException -> true
|
||||
else -> false
|
||||
}
|
||||
|
||||
@OptIn(InvalidWayOfUsingAnalysisSession::class)
|
||||
internal fun Project.invalidateCaches(context: KtElement?) {
|
||||
LibraryModificationTracker.getInstance(this).incModificationCount()
|
||||
(service<KotlinOutOfBlockModificationTrackerFactory>() as KotlinFirOutOfBlockModificationTrackerFactory).incrementModificationsCount()
|
||||
(service<KtAnalysisSessionProvider>() as KtFirAnalysisSessionProvider).clearCaches()
|
||||
if (context != null) {
|
||||
executeOnPooledThreadInReadAction { analyze(context) {} }
|
||||
}
|
||||
}
|
||||
+7
@@ -6,9 +6,11 @@
|
||||
package org.jetbrains.kotlin.idea.resolve
|
||||
|
||||
import org.jetbrains.kotlin.idea.completion.test.configureWithExtraFile
|
||||
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||
import org.jetbrains.kotlin.idea.shouldBeRethrown
|
||||
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
|
||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
||||
|
||||
@@ -18,6 +20,11 @@ abstract class AbstractFirReferenceResolveTest : AbstractReferenceResolveTest()
|
||||
override fun getProjectDescriptor(): KotlinLightProjectDescriptor =
|
||||
KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK
|
||||
|
||||
override fun tearDown() {
|
||||
project.invalidateCaches(myFixture.file as? KtFile)
|
||||
super.tearDown()
|
||||
}
|
||||
|
||||
override fun doTest(path: String) {
|
||||
assert(path.endsWith(".kt")) { path }
|
||||
myFixture.configureWithExtraFile(path, ".Data")
|
||||
|
||||
Reference in New Issue
Block a user