From 2c48ac1258d04540b6b01de4d0a475cc869d1281 Mon Sep 17 00:00:00 2001 From: Ilia Permiashkin Date: Fri, 13 Feb 2026 23:44:48 +0000 Subject: [PATCH] [grazie] IJPL-228233 Make local cache language dependant Merge-request: IJ-MR-191688 Merged-by: Ilia Permiashkin GitOrigin-RevId: 8a7e6d4fe97a43863ed89fe0907b5fdcabb41b43 --- .../com/intellij/grazie/cloud/DependencyParser.kt | 6 ++++-- .../intellij/grazie/ide/language/JavaSupportTest.kt | 13 +++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/plugins/grazie/src/main/kotlin/com/intellij/grazie/cloud/DependencyParser.kt b/plugins/grazie/src/main/kotlin/com/intellij/grazie/cloud/DependencyParser.kt index 5059f471b038..5c36568f7c1b 100644 --- a/plugins/grazie/src/main/kotlin/com/intellij/grazie/cloud/DependencyParser.kt +++ b/plugins/grazie/src/main/kotlin/com/intellij/grazie/cloud/DependencyParser.kt @@ -38,7 +38,7 @@ import org.languagetool.language.English object DependencyParser { private val LOG = Logger.getInstance(DependencyParser::class.java) - private val cachedTrees: MutableMap = createConcurrentSoftKeySoftValueMap() + private val cachedTrees: MutableMap = createConcurrentSoftKeySoftValueMap() @JvmStatic fun getParser(context: ProofreadingContext, minimal: Boolean): AsyncBatchParser? { @@ -75,7 +75,7 @@ object DependencyParser { (ltLanguage?.disambiguator as? LazyCachingConcurrentDisambiguator)?.ensureInitializedAsync() @Suppress("UNCHECKED_CAST") return sentences.associateWith { - cachedTrees.getOrPut(it.sentence) { + cachedTrees.getOrPut(SentenceWithLanguage(it.sentence, language)) { ensureActive() Tree.createFlatTree(support, it.sentence) } @@ -172,3 +172,5 @@ object DependencyParser { } } } + +private data class SentenceWithLanguage(val sentence: String, val language: Language) diff --git a/plugins/grazie/src/test/kotlin/com/intellij/grazie/ide/language/JavaSupportTest.kt b/plugins/grazie/src/test/kotlin/com/intellij/grazie/ide/language/JavaSupportTest.kt index b01addf1b613..fa6d96fa30c2 100644 --- a/plugins/grazie/src/test/kotlin/com/intellij/grazie/ide/language/JavaSupportTest.kt +++ b/plugins/grazie/src/test/kotlin/com/intellij/grazie/ide/language/JavaSupportTest.kt @@ -19,6 +19,7 @@ import com.intellij.testFramework.PerformanceUnitTest import com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl import com.intellij.tools.ide.metrics.benchmark.Benchmark +import org.junit.jupiter.api.assertDoesNotThrow import java.util.function.Consumer @@ -295,6 +296,18 @@ class JavaSupportTest : GrazieTestBase() { assertNull(myFixture.getAvailableIntention("Accept all writing suggestions…")) } + fun `test dependency parser creates correct trees based on text content language`() { + enableProofreadingFor(setOf(Lang.GERMANY_GERMAN, Lang.AMERICAN_ENGLISH)) + myFixture.configureByText("a.java", """ + // In der tiefen Winternacht saß der alte Mann am Feuer. Die fast. + + // Hello. This is really English text. Nothing to see here. Die fast. + """.trimIndent()) + assertDoesNotThrow { + myFixture.checkHighlighting() + } + } + fun `test asian-english mixed texts`() { runHighlightTestForFile("ide/language/java/Mixed.java")