FIR IDE: invalidate caches between tests
This commit is contained in:
@@ -6,8 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.checkers
|
package org.jetbrains.kotlin.checkers
|
||||||
|
|
||||||
import com.intellij.rt.execution.junit.FileComparisonFailure
|
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.test.withCustomCompilerOptions
|
||||||
import org.jetbrains.kotlin.idea.withPossiblyDisabledDuplicatedFirSourceElementsException
|
import org.jetbrains.kotlin.idea.withPossiblyDisabledDuplicatedFirSourceElementsException
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
||||||
import java.io.File
|
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(
|
override fun checkHighlighting(
|
||||||
checkWarnings: Boolean,
|
checkWarnings: Boolean,
|
||||||
checkInfos: Boolean,
|
checkInfos: Boolean,
|
||||||
|
|||||||
@@ -6,10 +6,17 @@
|
|||||||
package org.jetbrains.kotlin.findUsages
|
package org.jetbrains.kotlin.findUsages
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
|
||||||
abstract class AbstractFindUsagesFirTest : AbstractFindUsagesTest() {
|
abstract class AbstractFindUsagesFirTest : AbstractFindUsagesTest() {
|
||||||
override fun isFirPlugin(): Boolean = true
|
override fun isFirPlugin(): Boolean = true
|
||||||
|
|
||||||
|
override fun tearDown() {
|
||||||
|
project.invalidateCaches(file as? KtFile)
|
||||||
|
super.tearDown()
|
||||||
|
}
|
||||||
|
|
||||||
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
||||||
super.doTest<T>(path)
|
super.doTest<T>(path)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -6,10 +6,17 @@
|
|||||||
package org.jetbrains.kotlin.findUsages
|
package org.jetbrains.kotlin.findUsages
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
|
||||||
abstract class AbstractFindUsagesWithDisableComponentSearchFirTest : AbstractFindUsagesWithDisableComponentSearchTest() {
|
abstract class AbstractFindUsagesWithDisableComponentSearchFirTest : AbstractFindUsagesWithDisableComponentSearchTest() {
|
||||||
override fun isFirPlugin(): Boolean = true
|
override fun isFirPlugin(): Boolean = true
|
||||||
|
|
||||||
|
override fun tearDown() {
|
||||||
|
project.invalidateCaches(file as? KtFile)
|
||||||
|
super.tearDown()
|
||||||
|
}
|
||||||
|
|
||||||
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
||||||
super.doTest<T>(path)
|
super.doTest<T>(path)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -6,12 +6,19 @@
|
|||||||
package org.jetbrains.kotlin.findUsages
|
package org.jetbrains.kotlin.findUsages
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||||
import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
|
||||||
abstract class AbstractKotlinFindUsagesWithLibraryFirTest : AbstractKotlinFindUsagesWithLibraryTest() {
|
abstract class AbstractKotlinFindUsagesWithLibraryFirTest : AbstractKotlinFindUsagesWithLibraryTest() {
|
||||||
override fun isFirPlugin(): Boolean = true
|
override fun isFirPlugin(): Boolean = true
|
||||||
|
|
||||||
|
override fun tearDown() {
|
||||||
|
project.invalidateCaches(file as? KtFile)
|
||||||
|
super.tearDown()
|
||||||
|
}
|
||||||
|
|
||||||
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
||||||
super.doTest<T>(path)
|
super.doTest<T>(path)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -6,11 +6,18 @@
|
|||||||
package org.jetbrains.kotlin.findUsages
|
package org.jetbrains.kotlin.findUsages
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinJdkAndMultiplatformStdlibDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinJdkAndMultiplatformStdlibDescriptor
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
|
||||||
abstract class AbstractKotlinFindUsagesWithStdlibFirTest : AbstractKotlinFindUsagesWithStdlibTest() {
|
abstract class AbstractKotlinFindUsagesWithStdlibFirTest : AbstractKotlinFindUsagesWithStdlibTest() {
|
||||||
override fun isFirPlugin(): Boolean = true
|
override fun isFirPlugin(): Boolean = true
|
||||||
|
|
||||||
|
override fun tearDown() {
|
||||||
|
project.invalidateCaches(file as? KtFile)
|
||||||
|
super.tearDown()
|
||||||
|
}
|
||||||
|
|
||||||
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
override fun <T : PsiElement> doTest(path: String) = doTestWithFIRFlagsByPath(path) {
|
||||||
super.doTest<T>(path)
|
super.doTest<T>(path)
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -6,8 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.idea.highlighter
|
package org.jetbrains.kotlin.idea.highlighter
|
||||||
|
|
||||||
import org.jetbrains.kotlin.idea.addExternalTestFiles
|
import org.jetbrains.kotlin.idea.addExternalTestFiles
|
||||||
|
import org.jetbrains.kotlin.idea.invalidateCaches
|
||||||
import org.jetbrains.kotlin.idea.test.ProjectDescriptorWithStdlibSources
|
import org.jetbrains.kotlin.idea.test.ProjectDescriptorWithStdlibSources
|
||||||
import org.jetbrains.kotlin.idea.withPossiblyDisabledDuplicatedFirSourceElementsException
|
import org.jetbrains.kotlin.idea.withPossiblyDisabledDuplicatedFirSourceElementsException
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||||
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
||||||
|
|
||||||
@@ -23,6 +25,11 @@ abstract class AbstractFirHighlightingTest : AbstractHighlightingTest() {
|
|||||||
super.doTest(unused)
|
super.doTest(unused)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun tearDown() {
|
||||||
|
project.invalidateCaches(file as? KtFile)
|
||||||
|
super.tearDown()
|
||||||
|
}
|
||||||
|
|
||||||
override fun checkHighlighting(fileText: String) {
|
override fun checkHighlighting(fileText: String) {
|
||||||
val checkInfos = !InTextDirectivesUtils.isDirectiveDefined(fileText, NO_CHECK_INFOS_PREFIX);
|
val checkInfos = !InTextDirectivesUtils.isDirectiveDefined(fileText, NO_CHECK_INFOS_PREFIX);
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,30 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea
|
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.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) {
|
fun Throwable.shouldBeRethrown(): Boolean = when (this) {
|
||||||
is DuplicatedFirSourceElementsException -> true
|
is DuplicatedFirSourceElementsException -> true
|
||||||
else -> false
|
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
|
package org.jetbrains.kotlin.idea.resolve
|
||||||
|
|
||||||
import org.jetbrains.kotlin.idea.completion.test.configureWithExtraFile
|
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.shouldBeRethrown
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
|
||||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||||
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
import org.jetbrains.kotlin.test.uitls.IgnoreTests
|
||||||
|
|
||||||
@@ -18,6 +20,11 @@ abstract class AbstractFirReferenceResolveTest : AbstractReferenceResolveTest()
|
|||||||
override fun getProjectDescriptor(): KotlinLightProjectDescriptor =
|
override fun getProjectDescriptor(): KotlinLightProjectDescriptor =
|
||||||
KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK
|
KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK
|
||||||
|
|
||||||
|
override fun tearDown() {
|
||||||
|
project.invalidateCaches(myFixture.file as? KtFile)
|
||||||
|
super.tearDown()
|
||||||
|
}
|
||||||
|
|
||||||
override fun doTest(path: String) {
|
override fun doTest(path: String) {
|
||||||
assert(path.endsWith(".kt")) { path }
|
assert(path.endsWith(".kt")) { path }
|
||||||
myFixture.configureWithExtraFile(path, ".Data")
|
myFixture.configureWithExtraFile(path, ".Data")
|
||||||
|
|||||||
Reference in New Issue
Block a user