User: joe Date: 01 May 26 10:56 Revision: bcef0382133103c8bb5cab5557c51402340d5ade Summary: Fix freeze in analysis in TranslationIdentifier TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=10537&personal=false Index: src/main/kotlin/translations/identification/TranslationIdentifier.kt =================================================================== --- src/main/kotlin/translations/identification/TranslationIdentifier.kt (revision 683326d4fce469bfd5d97b0697f8bd312a9aa8f7) +++ src/main/kotlin/translations/identification/TranslationIdentifier.kt (revision bcef0382133103c8bb5cab5557c51402340d5ade) @@ -37,7 +37,6 @@ import com.intellij.codeInsight.completion.CompletionUtilCore import com.intellij.codeInspection.dataFlow.CommonDataflow import com.intellij.openapi.project.Project -import com.intellij.openapi.util.RecursionManager import com.intellij.psi.CommonClassNames import com.intellij.psi.JavaPsiFacade import com.intellij.psi.PsiArrayType @@ -58,6 +57,8 @@ import org.jetbrains.uast.util.isNewArrayWithInitializer object TranslationIdentifier { + private val isComputingValueWithDataflow = ThreadLocal.withInitial { false } + fun identify( element: UExpression ): TranslationInstance? { @@ -89,10 +90,17 @@ val translationKey = when (val javaPsi = element.javaPsi) { is PsiExpression -> { - RecursionManager.doPreventingRecursion(javaPsi, false) { + if (isComputingValueWithDataflow.get()) { + null + } else { + isComputingValueWithDataflow.set(true) + try { - CommonDataflow.computeValue(javaPsi) as? String + CommonDataflow.computeValue(javaPsi) as? String + } finally { + isComputingValueWithDataflow.set(false) - } - } + } + } + } else -> element.evaluateString() }?.replace(CompletionUtilCore.DUMMY_IDENTIFIER_TRIMMED, "") ?: return null