From 7d1ac0ac97329b0abf92ac168ff626e5351a643e Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Thu, 3 Nov 2022 12:18:24 +0100 Subject: [PATCH] [AA] AbstractSymbolTest: fix race ^KT-54311 --- .../base/test/cases/symbols/AbstractSymbolTest.kt | 6 ++++-- .../api/symbols/pointers/KtPsiBasedSymbolPointer.kt | 12 +++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt index 44382fe5be4..9141ffb3831 100644 --- a/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt +++ b/analysis/analysis-api-impl-base/tests/org/jetbrains/kotlin/analysis/api/impl/base/test/cases/symbols/AbstractSymbolTest.kt @@ -57,14 +57,16 @@ abstract class AbstractSymbolTest : AbstractAnalysisApiSingleFileTest() { } fun KtSymbol.safePointer(): PointerWrapper? { - val regularPointer = runCatching(::createPointer).let { + val regularPointer = runCatching { + KtPsiBasedSymbolPointer.withDisabledPsiBasedPointers(disable = false, action = ::createPointer) + }.let { if (directiveToIgnoreSymbolRestore == null) it.getOrThrow() else it.getOrNull() } ?: return null val nonPsiPointer = kotlin.runCatching { if (this is KtFileSymbol) return@runCatching null - KtPsiBasedSymbolPointer.withDisabledPsiBasedPointers(::createPointer) + KtPsiBasedSymbolPointer.withDisabledPsiBasedPointers(disable = true, action = ::createPointer) } return PointerWrapper( diff --git a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt index e3958e59193..dde9b3803b7 100644 --- a/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt +++ b/analysis/analysis-api/src/org/jetbrains/kotlin/analysis/api/symbols/pointers/KtPsiBasedSymbolPointer.kt @@ -56,13 +56,11 @@ public class KtPsiBasedSymbolPointer private constructor(private v @TestOnly @Synchronized - public fun withDisabledPsiBasedPointers(action: () -> T): T { - disablePsiPointer = true - return try { - action() - } finally { - disablePsiPointer = false - } + public fun withDisabledPsiBasedPointers(disable: Boolean, action: () -> T): T = try { + disablePsiPointer = disable + action() + } finally { + disablePsiPointer = false } @Volatile