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")