From 39edcb0f2960df4afcf25506321929e7dceed348 Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Tue, 6 Apr 2021 18:23:46 +0200 Subject: [PATCH] [FIR IDE] Fix invalid caches reset for Fir Renderer tests --- .../jetbrains/kotlin/idea/ideaFirTestUtils.kt | 33 ------------------- .../AbstractFirReferenceResolveTest.kt | 2 -- .../frontend/api/types/KtTypeRendererTest.kt | 6 ++++ .../org/jetbrains/kotlin/idea/testUtils.kt | 18 ++++++++++ 4 files changed, 24 insertions(+), 35 deletions(-) delete mode 100644 idea/idea-fir/tests/org/jetbrains/kotlin/idea/ideaFirTestUtils.kt diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/ideaFirTestUtils.kt b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/ideaFirTestUtils.kt deleted file mode 100644 index f453eb32f53..00000000000 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/ideaFirTestUtils.kt +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2010-2020 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 - -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.analyse -import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSessionProvider -import org.jetbrains.kotlin.psi.KtElement -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() as KotlinFirOutOfBlockModificationTrackerFactory).incrementModificationsCount() - (service() as KtFirAnalysisSessionProvider).clearCaches() - if (context != null) { - executeOnPooledThreadInReadAction { analyse(context) {} } - } -} \ No newline at end of file diff --git a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/resolve/AbstractFirReferenceResolveTest.kt b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/resolve/AbstractFirReferenceResolveTest.kt index e5ac023b7d1..efb4c83ff1a 100644 --- a/idea/idea-fir/tests/org/jetbrains/kotlin/idea/resolve/AbstractFirReferenceResolveTest.kt +++ b/idea/idea-fir/tests/org/jetbrains/kotlin/idea/resolve/AbstractFirReferenceResolveTest.kt @@ -7,11 +7,9 @@ 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 abstract class AbstractFirReferenceResolveTest : AbstractReferenceResolveTest() { diff --git a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/types/KtTypeRendererTest.kt b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/types/KtTypeRendererTest.kt index 6ecd59ff67b..dac41f981db 100644 --- a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/types/KtTypeRendererTest.kt +++ b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/frontend/api/types/KtTypeRendererTest.kt @@ -9,6 +9,7 @@ import com.intellij.testFramework.LightProjectDescriptor import org.jetbrains.kotlin.idea.executeOnPooledThreadInReadAction import org.jetbrains.kotlin.idea.frontend.api.analyse import org.jetbrains.kotlin.idea.frontend.api.components.KtTypeRendererOptions +import org.jetbrains.kotlin.idea.invalidateCaches import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.psi.KtFile @@ -18,6 +19,11 @@ import org.jetbrains.kotlin.psi.KtProperty class KtTypeRendererTest : KotlinLightCodeInsightFixtureTestCase() { override fun isFirPlugin() = true + override fun tearDown() { + project.invalidateCaches(file as? KtFile) + super.tearDown() + } + private fun doTestByTypeText( type: String, expected: String, diff --git a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/testUtils.kt b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/testUtils.kt index b332d467731..6f3777d5af6 100644 --- a/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/testUtils.kt +++ b/idea/idea-frontend-fir/tests/org/jetbrains/kotlin/idea/testUtils.kt @@ -7,14 +7,22 @@ package org.jetbrains.kotlin.idea import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.runReadAction +import com.intellij.openapi.components.service +import com.intellij.openapi.project.Project import com.intellij.openapi.util.io.FileUtil import com.intellij.testFramework.LightPlatformTestCase +import org.jetbrains.kotlin.idea.caches.project.LibraryModificationTracker import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.test.InTextDirectivesUtils 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.KtAnalysisSession +import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSessionProvider import org.jetbrains.kotlin.idea.frontend.api.analyse +import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSessionProvider import org.jetbrains.kotlin.psi.KtElement +import org.jetbrains.kotlin.trackers.KotlinOutOfBlockModificationTrackerFactory import java.io.File fun executeOnPooledThreadInReadAction(action: () -> R): R = @@ -69,4 +77,14 @@ inline fun withPossiblyDisabledDuplicatedFirSourceElementsException(fileText } else { return action() } +} + +@OptIn(InvalidWayOfUsingAnalysisSession::class) +fun Project.invalidateCaches(context: KtElement?) { + LibraryModificationTracker.getInstance(this).incModificationCount() + (service() as KotlinFirOutOfBlockModificationTrackerFactory).incrementModificationsCount() + (service() as KtFirAnalysisSessionProvider).clearCaches() + if (context != null) { + executeOnPooledThreadInReadAction { analyse(context) {} } + } } \ No newline at end of file